特定のファイルより古いファイルを削除する

特定のファイルより古いファイルを削除する

フォルダから特定のファイルより古いファイルをすべて削除する必要があります。
CentOS 7でbashを実行します。

これには解決策がありますが、よりエレガントな方法があるべきだと思います。

reference_file=/my/reference/file

get_modify_time()
{
    stat $1 | grep -Po "Modify: \K[0-9- :]*"
}

pit=$(get_modify_time $reference_file)
for f in /folder/0000* ; do [[ "$pit" > "$(get_modify_time $f)" ]] && rm $f ; done

ベストアンサー1

まだ試していませんが、find作業全体をうまく処理する必要があります。

$ find dir/ -type f ! -newer reference -delete

...または...

$ find dir/ -type f ! -newer reference ! -name reference -delete

オリジナル:

  • ! -newer reference最後の修正時間が短いですreference
  • -delete削除してください。
  • ! -name reference下にあり、維持したいreference場合は除外してください。dir/

これにより、以前referenceとその中のすべての項目が削除されますdir/

おすすめ記事