将子目录中的文件复制到临时文件夹,其中只存在1个文件扩展名

时间:2018-05-25 11:21:40

标签: linux bash unix

我有这样的子目录:

dir1/
 1a.txt
 1a.out
 1b.txt
dir2/
 2a.txt
 2b.txt
 2b.out

我想要复制该子目录中只存在1种文件类型的文件。即在这种情况下,我想将1b.txt2a.txt复制到tmp文件夹。

我可以保证每个文件都会显示.txt,但有时.out没有。基本上我只是希望找到.txt的文件,但它们的.out等效文件不存在。

1 个答案:

答案 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 SubstitutionManipulating Strings的解释和更多玩具的规则。

请注意,这不会处理文件名中嵌入的特殊字符或空格。