![删除早于特定文件的文件](https://linux22.com/image/61382/%E5%88%A0%E9%99%A4%E6%97%A9%E4%BA%8E%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%87%E4%BB%B6.png)
我需要从文件夹中删除早于特定文件的所有文件。
在 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