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