我想写一个shell脚本,以便递归地列出所有包含NEW子目录的不同子目录(NEW是一个固定名称)。
Dir1/Subdir1/Subsub1/NEW/1.jpg
Dir1/Subdir1/Subsub1/NEW/2.jpg
Dir1/Subdir1/Subsub2/NEW/3.jpg
Dir1/Subdir1/Subsub2/NEW/4.jpg
Dir1/Subdir2/Subsub3/NEW/5.jpg
Dir1/Subdir2/Subsub4/NEW/6.jpg
我想要得到
Dir1/Subdir1/Subsub1
Dir1/Subdir1/Subsub2
Dir1/Subdir2/Subsub3
Dir1/Subdir2/Subsub4
我怎样才能做到这一点?
最佳答案
find . -type d -name NEW | sed 's|/NEW$||'
--- 编辑 ---
对于您的评论,sed 没有 -print0。有多种方法可以做到这一点(其中大多数都是错误的)。一种可能的解决方案是:
find . -type d -name NEW -print0 | \
while IFS= read -rd '' subdirNew; do \
subdir=$(sed 's|/NEW$||' <<< "$subdirNew"); \
echo "$subdir"; \
done
它应该容忍文件名中的空格和换行符
关于bash - 递归列出子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198709/