我正在編寫一個腳本來刪除一週以前的構建工件。Bash腳本,比如日期?
這些文件的名稱形式爲artifact-1.1-200810391018.exe。
如何去除大於1周大的文件,排除日期 - 時間戳結束時的小時和分鐘時間?
目前它正在刪除目錄中的所有文件。
#!/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的答案,但爲了以防萬一,在那裏你不能依靠一個理由文件系統日期並且必須使用嵌入文件名的時間? – 2008-10-29 21:30:31