总结

总结

因此,我想显示(例如ls)过去 7 天内更改的所有文件。如果我在 docroot 文件夹中,它应该能够“更深入地”查看。

例如:

File        Last changed
docroot
|- myfile1  30.11.2015
|- myfile2  10.11.2015
|- MySub
   |-sub1   30.11.2015
   |-sub2   10.11.2015

因此,ls(或任何适合的内容)应该输出myfile1和 (如果可能的话) MySub/sub1

用一个命令就可以完成吗?

答案1

当然。从您所在的目录执行:

find . -type f -mtime -7 -exec ls -l {} \; 

向其中添加重定向(即将> results.txt它们存储到该文件中)。

  • type f仅包含文件而不包含目录
  • mtime -7从 7 天前到现在(+7 表示‘超过 7 天’)
  • 然后它将其输入以ls显示一长串列表

你也可以玩一下这个ls -l角色:

find . -type f -mtime -7 -exec ls -Rl --time-style=long-iso {} \; 
find . -type f -mtime -7 -exec ls -R  --time-style=long-iso {} \; 

将显示一个树状方法,其中目录位于长列表(1)或短列表(2)中的文件之间。

答案2

zsh

ls -l **/*(.m-7)
  • **/*将从当前目录开始递归查找文件

  • (.m-7)是 glob 限定符,.表示常规文件,m-7表示过去 7 天内修改过的文件

答案3

以下命令在 Mac OSX 上运行良好 - 也许在 ubuntu 上也运行良好……

find . -type f -mtime -7 -exec stat -lt "%Y-%m-%d %H:%M:%S" {} \; | cut -d\  -f6- | sort -r

这将查找当前目录树中过去 7 天内修改过的文件,输出修改日期 + 时间和路径,按最新排序。

示例输出:

2018-02-21 22:06:30 ./fmxmlsnippet.xml
2018-02-19 12:56:01 ./diff.html
2018-02-19 12:44:37 ./temp/iDDR/XMSC_fmxmlsnippet.xml
2018-02-18 22:04:05 ./temp/iDDR/XMFD_fmxmlsnippet.xml
2018-02-15 10:18:27 ./xml/iDDR/XML2_fmxmlsnippet.xml
2018-02-15 10:13:29 ./xsl/fmxmlsnippet/XML2_fmCM_AnalyseLayout.xsl
2018-02-15 10:11:36 ./xsl/.DS_Store
2018-02-15 10:10:51 ./xsl/_inc/inc.XML2_fmCM_ReportReferencesToExternalFiles.xsl
2018-02-15 10:10:09 ./xsl/_inc/.DS_Store
2018-02-15 10:07:35 ./xsl/fmxmlsnippet/XML2_fmCM_AnalyseLayout-NoAnchors.xsl
2018-02-15 10:07:35 ./xsl/_inc/inc.XML2_fmCM_AnalyseLayout.xsl

我将非常感激来自 ubuntu 用户的任何反馈。

答案4

总结

find root.d -type f -newermt "-7 days"

或者

find root.d -type f -newermt "$(date -d "$(date)-7days")"

经过测试狂欢使用:

Ubuntu 寻找
23.04 4.9.0
22.04 4.8.0
20.04 4.7.0

也在 macOS(darwin) zsh 和 bash 中进行了验证

使用以下内容来了解​​你拥有的版本

cat /etc/lsb-release
find --version

假设以下目录结构和文件具有这些相对修改的时间戳

root.d/
├── file_c (-5 years)
└── level_1.d/
    ├── file_a (-45 minutes)
    └── file_b (-1 second)

示例 1

递归查找所有文件根目录修改日期“比...更新”10 分钟前

NEWER_THAN="-10 minutes"
find root.d -type f -newermt "$NEWER_THAN"

结果

root.d/
└── level_1.d
    └── file_a

示例 2

递归查找所有文件根目录修改日期“比...更新”10 小时前及以上(“不更新于”)10分钟前

NEWER_THAN="-10 hours"
OLDER_THAN="-10 minutes"
find root.d -type f -newermt "$NEWER_THAN" -not -newermt "$OLDER_THAN"

结果

root.d/
└── level_1.d
    └── file_b

示例 3

递归查找所有文件根目录修改日期早于(“不更新于”)10天前

OLDER_THAN="-10 days"
find root.d -type f -not -newermt "$OLDER_THAN"

结果

root.d/
└── file_c

注意事项

经过一些简单的测试后,我确信比较严格大于/小于不相等。 相关讨论 另一个类似的讨论

-newerXY reference
      Succeeds if timestamp X of the file being considered is
      newer than timestamp Y of the file reference.  The letters
      X and Y can be any of the following letters:

      a   The access time of the file reference
      B   The birth time of the file reference
      c   The inode status change time of reference
      m   The modification time of the file reference
      t   reference is interpreted directly as a time

查找手册页

相关内容