有没有办法使用 find 来过滤文件列表?

有没有办法使用 find 来过滤文件列表?

我的输出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

有没有一种不太复杂的方法来做到这一点?

相关内容