
次のスクリプトは単一のフォルダーに対して機能しますが、すべてのサブディレクトリを反復処理したいと思います。
ls /home/user/Desktop/cron_database_hourly/*/*_[012][0-9]*.zip | head -n -1 | \
while read -r f; do rm "$f"; done
答え1
おそらく次のような方法でも大丈夫でしょう(未テスト) -
for each in `find -type d /home/usr/Desktop/cron_database/hourly`
do
ls -t $each/_[012][0-9]*.zip | head -n -1 | \ while read -r f;
do
rm "$f"
done
done
「for each」ループはすべてのディレクトリのリストを検索し、ls に「-t」を追加すると、最新のものを先頭にして日付順に並べ替えられます。