按扩展名递归查找文件,排除文件夹,按修改日期对结果进行排序

按扩展名递归查找文件,排除文件夹,按修改日期对结果进行排序

我需要找到符合以下条件的文件:

  • 扩展是md
  • 在文件夹.及其所有子文件夹中
  • 排除所有node_modules文件夹
  • 按修改日期排序,所有结果中最新的在前

我尝试了这个但是我猜我的排除是错误的因为当包含片段时node_modules我仍然得到包括文件夹的结果:node_modules\( ! -iname "node_modules" \)

find $PWD -name "*.md" \( ! -iname "node_modules" \) -print0 | xargs -0 ls -laht

答案1

这似乎有效,但是当有大量子文件夹时,速度会非常慢。因此,我愿意寻求更好的解决方案:

find "$PWD" -name "*.md" ! -path '*/node_modules/*' -print0 | xargs -0 ls -laht

更新: 根据Kamil Maciorowski 的提示关于-prune,我想出了这个解决方案,现在速度快得多:

find "$PWD" -name "node_modules" -prune -o -name "*.md" -print0 | xargs -0 ls -laht -P 1

相关内容