フォルダから特定のファイルより古いファイルをすべて削除する必要があります。
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/
。
答え2
test
-nt
(より最新の)および(より古い)演算子を使用して-ot
ファイル変更時間を比較します。
if [ "$file1" -ot "$file2" ]; then
#do whatever you want;
fi