bash - 使用 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
解决方案
你甚至不需要find
这个,只需要一个排除file0.jpg
. 这应该有效:
for dir in data/*; do
(
cd -- "$dir" || continue
convert file[!0].jpg "$(basename "$dir")".pdf
)
done
在这里,我还添加了一些保护措施,cd
例如 subshell 以避免退出。
推荐阅读
- azure-devops - 在 Dev Ops Pipeline 的 Azure Powershell 中获取环境变量集
- serialization - ActiveReport 14 和 SectionDocument 序列化问题
- react-native - RNFirebase 'keepSynced' 未按预期工作
- javascript - 总是显示js的旧逻辑
- swift - UIButton 和 UIView 之间的约束
- maven - maven-surefire-report-plugin 没有选择它的配置
- asp.net - 以不同模式运行多个集线器的 Azure SignalR 服务
- html - 如何在不使用 angular、j 查询或 java 脚本的情况下访问选定的下拉列表?
- java - 使用房间数据库构建 gradle 时出错
- amp-html - AMP 等效于 onchange 窗口位置 URL