删除在特定日期之前创建的所有文件

use*_*398 37 shell ksh find files

我有一个包含大量文件的目录(例如一年中每一天的日志)。我想删除在 22/11 之前创建的所有文件。我怎样才能做到这一点?我必须使用findthen exec-rm吗?我正在使用 ksh。

Val*_*ami 41

使用find仍然是删除文件的首选方式。有关更多信息,请参阅http://mywiki.wooledge.org/UsingFind

一种方法是创建一个带有时间戳的文件。例如

touch -t 201311220000 /tmp/timestamp
Run Code Online (Sandbox Code Playgroud)

现在删除与find时间戳匹配的文件 GNU (假设在当前目录中),例如:

find . -type f ! -newer /tmp/timestamp -delete  
Run Code Online (Sandbox Code Playgroud)

或非 GNU 查找

find . -type f ! -newer /tmp/timestamp -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

  • 那这个呢 ?它有效吗?find -type f -mtime +5 -exec rm -f {} \; (3认同)

Sté*_*las 35

使用 GNU 或某些 BSD find

find . ! -newermt 2013-11-22 ! -type d -delete
Run Code Online (Sandbox Code Playgroud)

请注意,它会检查文件的最后修改时间。在某些 BSD 上,您可以使用-newerBt代替-newermt来检查文件的 inode出生时间(如果可用)。