10

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

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

我想要做的是将子目录中的所有“* .masked”文件移出/1/Un. 在 Linux/Unix 中是否有一种紧凑的方法可以做到这一点?

4

3 回答 3

16

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

mv 1/*.masked targetDir

targetDir 可能在哪里..

如果您想将其从目录 1、2、3 中移动,则可以执行类似的操作

mv */*.masked targetDir

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

mv [0-9][0-9]/*.masked targetDir
于 2009-03-10T01:32:54.100 回答
6
mv */*.masked .
于 2009-03-10T01:30:50.470 回答
5

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

ls */*.masked

这将返回所有以 .masked 更深的目录结尾的文件。

所以要移动它们:

mv */*.masked destination
于 2009-03-10T01:30:32.840 回答