首页 > 解决方案 > 使用 find 排除所有子目录的文件

问题描述

我有这样的目录结构

data
|___
    |
    abc
     |____file0.jpg
     |____file1.jpg
     |____file2.jpg
    def
     |____file0.jpg
     |____file1.jpg
     |____file2.jpg
    ghi
     |____file0.jpg
     |____file1.jpg
     |____file2.jpg
    jkl
     |____file0.jpg
     |____file1.jpg
     |____file2.jpg

file0,file1,file2,数据目录内的所有文件夹中都有一个。我尝试并成功合并到pdf所有目录的文件中。但我希望忽略file0所有子目录,然后合并为pdf. 总之,我希望合并file1,file2到 pdf 中。

这是我的命令:

for dir in data/*; do 
  cd "$dir"
  find . -type f -name \*0.jpg -not -path | convert ./*.jpg "$(basename "$dir")".pdf
  cd - 
done

标签: bashunix

解决方案


你甚至不需要find这个,只需要一个排除file0.jpg. 这应该有效:

for dir in data/*; do
    (
    cd -- "$dir" || continue
    convert file[!0].jpg "$(basename "$dir")".pdf
    )
done

在这里,我还添加了一些保护措施,cd例如 subshel​​l 以避免退出。


推荐阅读