我知道我可以使用带有-mtime和-ctime等选项的find命令,但这些选项需要在命令中设置一个数字。
在我的情况下,我不在乎时间是多少,我只想找到-ctime和-mtime彼此相等的任何文件。(我在Mac上,所以从技术上讲,它是-mtime和-Btime(
我发现如何做到这一点比我预想的要困难。
编辑:我正试图在macOS中做到这一点,文件系统是APFS
正如您在这里看到的,创建时间并没有真正存储在类Unix系统上。有些文件系统可能支持此功能,您可以检查stat file
命令的输出,对我来说,此输出的最后一行是Birth: -
。因此,如果您确实有创建时间,您可以获得从未修改过的文件:
find . -type f -print0 | xargs -0 stat -c "%n %W %Y" |
awk '$NF==$(NF-1) {$(NF-1)=$NF=""; print}'
%W
将打印出生时间(如果不支持,可能是0
(,%Y
将打印最后一次修改时间。上面的最后一个awk
命令只打印这些时间匹配的文件名。
对于macOS:
find . -type f -print0 | xargs -0 stat -f "%N %B %m" |
awk '$NF==$(NF-1) {$(NF-1)=$NF=""; print}'
另请参阅macOS统计手册页
我认为这在find中是不可能的,但您可以使用外部工具过滤这些文件,例如shell:
find . -type f -printf '%T@ %C@ %fn' | while read mtime ctime fname; do
[ "$mtime" == "$ctime" ] && echo "$fname"
done