我的输出locate --existing --regex
很快就获得了。类似的过程find
需要几个小时——这是一个巨大的体积。
我想find
对此文件列表应用进一步的过滤器。
我发现的唯一快捷方式是应用相同的搜索两次:首先使用 获取包含这些文件的目录列表locate
,然后通过非递归运行它find
:
# Abandoned Office temporary files
PATTERN='/foo/.+/~$[^/]+'
# locate doesn't re-enter the same path so sort before uniq is unnecessary.
# --existing is unnecessary, since locality of reference and thus
# performance and load are better when stat-ing the entries is done only
# once by `find`
locate --regex "$PATTERN" | xargs -d\\n -L1 dirname -- | uniq | \
while read -r path; do
find "$path" -maxdepth 0 -regex "$PATTERN" -type f -ctime +30 -exec rm '{}' ';'
done
有没有一种不太复杂的方法来做到这一点?