因此,我想显示(例如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