我想列出 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。