我有这样的子目录:
dir1/
1a.txt
1a.out
1b.txt
dir2/
2a.txt
2b.txt
2b.out
我想要复制该子目录中只存在1种文件类型的文件。即在这种情况下,我想将1b.txt
和2a.txt
复制到tmp文件夹。
我可以保证每个文件都会显示.txt
,但有时.out
没有。基本上我只是希望找到.txt
的文件,但它们的.out
等效文件不存在。
答案 0 :(得分:0)
Aserre提到的双循环的简单版本:
for d in dir?
do for f in $d/*.txt
do [[ -e ${f%.txt}.out ]] && continue || cp "$f" tmp/
done
done
这只复制* .txt,所以如果你还想要* .out文件没有匹配的* .txt,你必须单独检查或复杂一点,但它应该给你一些工作。
c.f。 Parameter Substitution和Manipulating Strings的解释和更多玩具的规则。
请注意,这不会处理文件名中嵌入的特殊字符或空格。