1 주 이상 된 빌드 아티팩트를 제거하는 스크립트를 작성 중입니다.Bash 스크립트, 날짜와 일치합니까?
파일의 이름은 이고 이슈 -1 1.1-200810391018.exe입니다.
date-time-stamp의 끝에 시간과 분을 제외하고 1 주 이상 된 파일 만 제거하려면 어떻게합니까?
현재 디렉토리의 모든 파일을 제거하고 있습니다.
find /path/to/files -name "artifact*" -type f -mtime +7 -exec rm {} \;
:
#!/bin/sh
NIGHTLY_LOCATIONS=("/foo" "/bar")
ARTIFACT_PREFIX="artifact-*-"
NUM_TO_KEEP=7
for home in $(seq 0 $((${#NIGHTLY_LOCATIONS[@]} - 1))); do
echo "Removing artifacts for" ${NIGHTLY_LOCATIONS[$location]}
for file in `find ${NIGHTLY_LOCATIONS[$location]} -name "$ARTIFACT_PREFIX*"`; do
keep=true
for day in $(seq 0 $((${NUM_TO_KEEP} - 1))); do
date=`date --date="$day days ago" +%Y%m%d`
echo $(basename $file ".exe") " = " $ARTIFACT_PREFIX$date
if [ "$(basename $file ".exe")" != "$ARTIFACT_PREFIX$date" ]; then
keep=false
fi
done
if [ !$keep ]; then
echo "Removing file"
rm -f $file
fi
done done
나는 VonC의 답변을 좋아하지만, 단지 경우에, 당신이 의지 할 수없는 이유가 파일 시스템 날짜와 파일 이름에 포함 된 시간을 사용해야합니까? –