Linux/Unix:查找在特定日期修改的文件

时间:2020-01-09 10:46:01  来源:igfitidea点击:

如何在Linux/Apple OS X/* BSD和Unix等操作系统下使用find命令查找在2013-02-07(07/Feb/2013)上已修改的所有文件?
有两种方法可以列出在当年给定日期之后修改的给定目录中的文件。
最新版本的GNU/find命令使用以下语法:

语法

GNU/find最新版本:

find /path/to/dir -newermt "date" 
find /path/to/dir -newermt "Feb 07" 
find /path/to/dir -newermt "yyyy-mm-dd" 
#List all files modified on given date 
find /path/to/dir -newermt yyyy-mm-dd ! -newermt yyyy-mm-dd -ls 
##print all *.pl ##
find /path/to/dir -newermt "yyyy-mm-dd" -print -type f -iname "*.pl" 

另一种方法适用于v4.3.3之前的find版本:

touch -t 02010000 /tmp/stamp$$
find /usr -newer /tmp/stamp$$
rm -f /tmp/stamp$$

例子

要查找在2013-02-07(07/Feb/2013)上已修改的所有文件,请执行:

find /path/to/dir -type f -name "*" -newermt 2013-02-07 ! -newermt 2013-02-08

输出示例:

./output/tmp/rss.js-gzip-10881623-407-1360173602
./images/advanced-cache.php
./images/faq/2013/02/ir-150x150.jpg
./images/faq/2013/02/warning-40px76.png

要在/home/Hyman/projects中"找出所有Python文件"(* .py),这些文件已在2013-02-07(07/Feb/2013)上进行了修改,请执行:

find $HOME/projects -type f -name "*.py" -newermt 2013-02-07 ! -newermt 2013-02-08 -print

传递-ls选项以获取详细文件列表:

find $HOME/projects -type f -name "*.py" -newermt 2013-02-07 ! -newermt 2013-02-08 -ls

要在/home/Hyman/projects中"发现并删除所有tmp"文件(* .tmp),这些文件已于2013-02-07(07/Feb/2013)进行了修改,请执行:

find $HOME/projects -type f -name "*.py" -newermt 2013-02-07 ! -newermt 2013-02-08 -delete