如何在 unix/linux 中找到仅在今天创建而不是在24小时内创建的所有文件
要在工作目录及其子目录中找到所有今天才修改的文件(从一天开始,即上午12点) :
touch -t `date +%m%d0000` /tmp/$$ find . -type f -newer /tmp/$$ rm /tmp/$$
来源
在我的 Fedora 10系统上,使用 findutils-4.4.0-1.fc10.i386:
findutils-4.4.0-1.fc10.i386
find <path> -daystart -ctime 0 -print
-daystart标志告诉它从今天开始计算,而不是从24小时前开始计算。
-daystart
但是请注意,这实际上将列出在最后一天修改的 或者创建的文件。find没有查看文件真实创建日期的选项。
find
find . -mtime -1 -type f -print
您可以使用 find和 ls来完成以下操作:
ls
find . -type f -exec ls -l {} \; | egrep "Aug 26";
它会找到这个目录中的所有文件,显示有用的信息(-l) ,并用您想要的日期过滤行... ... 它可能有点慢,但在某些情况下仍然有用。
-l
请记住,在8月和26日之间有2个空格。否则您的 find 命令将无法工作。
如果你不小心将 rsync 同步到了错误的目录,上面的建议可以帮助你找到新的文件,但是对我来说,最简单的方法是连接到一个 SFTP 客户端,比如 Transmit,然后根据日期进行排序和删除。
我经常用这个词:
$ ls -altrh --time-style=+%D | grep $(date +%D)
使用 ls 或 find 包含今天创建的所有文件。
使用 ls: ls -ltr | grep "$(date '+%b %e')"
ls -ltr | grep "$(date '+%b %e')"
使用 find: cd $YOUR_DIRECTORY; find . -ls 2>/dev/null| grep "$(date '+%b %e')"
cd $YOUR_DIRECTORY
find . -ls 2>/dev/null| grep "$(date '+%b %e')"
在浏览了许多帖子之后,我发现了最有效的一个
find $file_path -type f -name "*.txt" -mtime -1 -printf "%f\n"
这样只打印文件名 不是 /path/tofolder/abc.txt
/path/tofolder/abc.txt
也可以玩弄或定制与 -mtime -1
-mtime -1
这对我很有用。列出5月30日在工作目录中创建的文件。
ls -lt | grep 'May 30'
find ./ -maxdepth 1 -type f -execdir basename '{}' ';' | grep `date +'%Y%m%d'`
要在24小时内获取文件,请执行以下命令:
find . -type f -mtime 1 -exec ls -l {} \;
要获取今天创建的文件,执行以下命令:
find . -type f -mtime -1 -exec ls -l {} \;
获取在 n 天之前创建的文件,其中 + 2是在2天之前在下面的命令中创建的文件:
find . -type f -mtime +2 -exec ls -l {} \;