如何按日期范围列出文件?

如何按日期范围列出文件?

我想列出 3 天前的文件。我在以下网址找到了这个堆栈溢出

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012

但是我不太明白整个命令的意思。我想知道是否有一些简短易懂的命令。

答案1

这应该有效

find . -type f -mtime -3

解释

find         find files
.            starting in the current directory (and it's subdirectories)
-type f      which are plain files (not directories, or devices etc)
-mtime -3    modified less than 3 days ago

man find详细信息请参阅


更新

要查找在特定日期和时间之前最后修改的文件(例如 2013 年 2 月 20 日 08:15),你可以执行以下操作

  touch -t 201302200815 freds_accident
  find . -type f ! -newer freds_accident
  rm freds_accident

man touch (或者info touch-呃!)

这有点糟糕,也许有更好的方法。上述方法适用于古老的非 GNU Unix 以及当前的 Linux。

答案2

Find 支持带有 -ctime 和 -mtime +/- 参数的间隔。

例如

$ for y in {07..14};do \
  for m in {01..12};do \
  for d in {01..30};do \
    touch -t 20$y$m${d}0101 $y$m$d.file ;done;done;done

$ find . -mtime +0 -mtime -$(( 3 * 365 + 3 )) |sort 
./100304.file
./100305.file
./100306.file
(...)
./130302.file
./130303.file
./130304.file

如果您想要 3 年前 3 天至一周前的时间间隔内创建的文件,您可以使用 -mtime +7 -mtime -1098。

相关内容