从目录移动所有文件一步到位

时间:2009-03-10 01:24:33

标签: linux bash shell unix mv

我有一个看起来像这样的目录

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中有一种简洁的方法吗?

3 个答案:

答案 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 .