我有一个看起来像这样的目录
fool@brat:/mydir/ucsc_mm8> tar -xvf *.tar
1/chr1.fa.masked
1/chr1_random.fa.masked
2/chr2.fa.masked
3/chr3.fa.masked
4/chr4.fa.masked
5/chr5.fa.masked
5/chr5_random.fa.masked
19/chr19.fa.masked
Un/chrUn_random.fa.masked
我想要做的是将子目录/1
中的所有“* .masked”文件移出/Un
。
在Linux / Unix中有一种简洁的方法吗?
答案 0 :(得分:16)
移动文件的典型方法是匹配特定表达式的所有文件
mv 1/*.masked targetDir
targetDir可以是..
如果你想从目录1,2,3移动它,那么你可以做类似
的事情mv */*.masked targetDir
或者,如果您想从编号目录中专门移动它,您可以运行类似
的内容mv [0-9][0-9]/*.masked targetDir
答案 1 :(得分:5)
许多unix shell也支持路径的目录部分中的*运算符。以下至少在bash和zsh中起作用:
ls */*.masked
这将返回以.mask一个目录更深的所有文件。
所以要移动它们:
mv */*.masked destination
答案 2 :(得分:5)
mv */*.masked .