Linux
管家舊文件和目錄
我遇到了一些麻煩,我正在嘗試編寫一個腳本,該腳本將創建一個超過 7 天的文件和目錄列表,並刪除不在列表 tokeep.list 中的文件和目錄。我的第一個問題是,如果我在 nodelete 列表上放了一個目錄,但是這個目錄裡面有舊文件,這些文件沒有被刪除,到目前為止,我能做到的唯一解決方案是執行一個命令目錄和其他文件,這很醜陋,我不是開發人員。
LogFile=/users/nordic/housekeep.log source config.cfg exec &> >(tee $LogFile) echo "Starting Housekeep files at $host $timestamp" echo "Creating list of directories to delete" cd $dir find $dir/* -maxdepth 1 -type d -mtime +$days > /users/nordic/todelete if [ $? -eq 0 ]; then echo OK else echo FAIL fi echo "deleting directories to listed on todelete file" dels=`cat /users/nordic/todelete` readarray -t keeps < /users/nordic/tokeep for keep in "${keeps[@]}"; do dels=`echo "$dels" | grep -v "$keep"` done echo "$dels" > /users/nordic/todelete readarray -t dels < /users/nordic/todelete; for del in "${dels[@]}"; do rm -rv "$del"; done result=$? if [ $result -eq 0 ]; then echo SUCCESS |tee /users/nordic/res else echo FAILED |tee /users/nordic/res fi find $dir/* -maxdepth 1 -type f -mtime +$days -print -delete #SUBJECT="Automated Housekeep $host $resu" #TO="nordic@blah.com" #MESSAGE="$LogFile" #mailx -s "$SUBJECT" -r "info<sysdm@blah.com>" $TO < $MESSAGE
我有一個帶有變數的 config.cfg 文件,我要做的是創建一個文件列表和要保留的目錄名稱,然後刪除其餘部分。歡迎任何建議。
cd "$dir" && \ find . -type d ! -name . -mtime +"$days" \ ! -exec sh -c 'printf %s\\n "${1/./$PWD}" | grep -qFf /users/nordic/tokeep' {} {} \; \ -print0 -prune -o -type f -mtime +"$days" -delete |\ xargs -r0 rm -r
在職的
成功後
cd
進入dir。誰的名字儲存在$dir
我們啟動一個
find
命令,其中包含以下內容:
對於一個
directory
:
- 它不是目前目錄並且它早於 $days 然後將其名稱發送到管道另一側的 xargs,前提是在 tokeep 文件中找不到它。也不要進入此目錄,因為它已被標記為清除。
OTW,
file
如果它們超過 $days,則刪除它們。將
xargs
傳遞將被刪除的舊目錄。