findコマンドのdeleteオプション
やりたいことは
条件に合うファイルを検索し、そのファイルを削除したい。
下位の階層も含めて検索対象としたい。
findコマンドとxargsの組み合わせで行えばいいかと思ったのですが、findコマンドに-deleteオプションがあり、それを使うのが簡単でした。
# -mtime 2 ... 2日前に作成したファイル
find ./ -name '*.tmp' -type f -mtime 2 -delete
デフォルトで下位の階層まで検索対象にしますが、
下位の何階層までを検索対象にするか指定したい場合は、「maxdepth 」で指定できます。
log
+ 202201
+ 20220101.log
+ 20220102.log
+ 20220103.log
:
+ 202202
:
2を指定すると logフォルダ直下のフォルダも対象します。
1は指定したフォルダのみが対象になります。
find ./log -maxdepth 2 -name '*.tmp' -type f -mtime 2 -delete
これに気付く前は以下のようにしないとけないと思ってました。
LOG_HOME=./log
for subfolder in AAA BBB
do
echo ${subfolder}
# -mtime 2 ... 2日前に作成したファイル
find ${LOG_HOME}${subfolder}/ -name '*.tmp' -type f -mtime 2 -delete
done
とか
LOG_HOME=./log
subfolder=("AAA" "BBB" "CCC")
for subfolder in ${subfolder[@]}
do
echo ${subfolder}
# -mtime 2 ... 2日前に作成したファイル
find ${LOG_HOME}/${subfolder}/ -name '*.tmp' -type f -mtime 2 -delete > log.txt 2>&1
done
この記事が気に入ったらサポートをしてみませんか?