Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash:基于文件日期戳删除_Linux_Bash - Fatal编程技术网

Linux 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新的所有文件,然后删除它们 如果要再次检查它是否正常工作,请删除-

我有一个文件夹,里面有一堆文件。我需要删除7月1日之前创建的所有文件。如何在bash脚本中实现这一点?

我认为以下内容应该满足您的要求:

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:GNU
find
有这个选项。但是,Unix/Linux没有创建日期的概念,因此我将使用
-newermt
c
用于更改inode的状态,而不是“创建”。@Dennis:感谢您的澄清。