/homeディレクトリで100 MBを超えるファイルを見つけ、10日を超えると削除する検索スクリプトがあります。 cron ジョブで毎日スケジュールされます。
find /home/ -mtime +10 -type f -size +100M -delete >/dev/null 2>&1
このスクリプトを使用すると空のディレクトリが残るので、ファイルが削除されたディレクトリを繰り返し削除したいと思います。
誰でもこのスクリプトにどのような変更が必要かを提案または提案できますか?
ベストアンサー1
GNUシステムでは、次のことができます。
find /home/ -mtime +10 -type f -size +100M -delete -printf '%h\0' |
awk -v RS='\0' '!seen[$0]++ {out = out $0 RS}
END {printf "%s", out}' |
xargs -r0 rmdir
awk
順序を維持しながら重複ファイルをフィルタリングし(そのファイルがある分岐の前に残す)、空のディレクトリを削除できるようrmdir
に、すべてのファイルが削除されるまで印刷を遅らせました。
そしてzsh
:
files=(/home/**/*(D.LM+100m+10od))
rm -f $files
rmdir ${(u)files:h}
これにより、ディレクトリが削除され、空になります。文書ただし、このディレクトリの親ディレクトリには削除するファイルがなく、次のために空の場合は削除されません。目次削除されました。これらも削除するには、GNUを使用rmdir
して。-p
--parents
rmdir
ファイルまたはディレクトリが削除されたかどうかにかかわらず、GNUを使用して空のディレクトリをすべて削除するには、find
次の手順を実行できます。
find /home/ \( -mtime +10 -type f -size +100M -o -type d -empty \) -delete