我有这个命令:
find /var/cache/pkg -newermt 2020-01-30 | grep 'kdeaccessibility-4.14.3_1'
什么都不返回。我把它改成这样:
find /var/cache/pkg -newermt 2020-01-30 -exec ls -D '%F' -l -t -r {} \; | grep 'kdeaccessibility-4.14.3_1'
并返回:
-rw-r--r-- 1 root wheel 556 2017-07-14 kdeaccessibility-4.14.3_1-6dc124e39c.txz
lrwxr-xr-x 1 root wheel 40 2017-07-21 kdeaccessibility-4.14.3_1.txz -> kdeaccessibility-4.14.3_1-6dc124e39c.txz
因此,该-newermt
选项似乎被该-exec
选项禁用。但我不明白为什么。
但是,如果我添加该-type f
选项,则查找按预期工作。
find /var/cache/pkg -type f -newermt 2020-01-30 -exec ls -D '%F' -l -t -r {} \; | grep 'kdeaccessibility-4.14.3_1'
什么都没有返回。我由此推断符号链接的存在导致了这种行为,但我不明白为什么。
我认为问题在于您的
find ... -exec ls ... {} \;
(不在-type f
参数find
列表中)ls
也将针对任何匹配的目录运行,从而ls
列出这些目录的全部内容(除非您将-d
选项添加到ls
参数列表中)。