Linux Bash:基于文件日期戳删除
我有一个文件夹,里面有一堆文件。我需要删除7月1日之前创建的所有文件。如何在bash脚本中实现这一点?我认为以下内容应该满足您的要求:Linux Bash:基于文件日期戳删除,linux,bash,Linux,Bash,我有一个文件夹,里面有一堆文件。我需要删除7月1日之前创建的所有文件。如何在bash脚本中实现这一点?我认为以下内容应该满足您的要求: touch -t 201007010000 dummyfile find /path/to/files -type f ! -newer dummyfile -delete 第一行创建了一个文件,最后一次修改是在2010年7月1日。第二行查找/path/to/file中日期不比dummyfile新的所有文件,然后删除它们 如果要再次检查它是否正常工作,请删除-
touch -t 201007010000 dummyfile
find /path/to/files -type f ! -newer dummyfile -delete
第一行创建了一个文件,最后一次修改是在2010年7月1日。第二行查找/path/to/file中日期不比dummyfile新的所有文件,然后删除它们
如果要再次检查它是否正常工作,请删除-delete
参数,它应该只列出要删除的文件。这应该可以:
find /file/path ! -newermt "Jul 01"
要查找要删除的文件,删除这些文件的命令如下:
find /file/path ! -newermt "Jul 01" -type f -print0 | xargs -0 rm
在将
-
放在“f”前面之后,它现在似乎列出了所有文件。如果我丢了“!”它只列出了较新的文件。我无耻地从中窃取/更改了答案哦,是的,对不起,不应该有a-f,只是f。我只是反复检查(并运行了一个快速测试),正确的命令确实是:find/path/to/files-type f-更新的dummyfile-delete不要介意我之前的评论。它只显示了旧的。谢谢Eric,find的哪个版本有“newerct”。我在任何手册页上都找不到它。@bramp:GNUfind
有这个选项。但是,Unix/Linux没有创建日期的概念,因此我将使用-newermt
。c
用于更改inode的状态,而不是“创建”。@Dennis:感谢您的澄清。