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

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 upto / Un 。 在Linux / Unix中有一种简洁的方法吗?

有帮助吗?

解决方案

移动文件的典型方法是匹配特定表达式的所有文件

mv 1/*.masked targetDir

targetDir可以是..

如果你想从目录1,2,3移动它,那么你可以做类似

的事情
mv */*.masked targetDir

或者,如果您想从编号目录中专门移动它,您可以运行类似

的内容
mv [0-9][0-9]/*.masked targetDir

其他提示

许多unix shell也支持路径的目录部分中的*运算符。以下至少在bash和zsh中起作用:

ls */*.masked

这将返回以.mask一个目录更深的所有文件。

所以要移动它们:

mv */*.masked destination
mv */*.masked .
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top