Перемещение всех файлов из каталогов Один шаг вверх

У меня есть каталоги, которые выглядят как

[email protected]:/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?

Ответ 1

Типичным способом перемещения файлов всех файлов, соответствующих определенному выражению, является

mv 1/*.masked targetDir

где targetDir может быть...

Если вы хотите переместить его из каталогов 1,2,3, вы можете сделать что-то вроде

mv */*.masked targetDir

Или, если вы хотите специально переместить его из нумерованных каталогов, вы можете просто запустить что-то вроде

mv [0-9][0-9]/*.masked targetDir

Ответ 2

Многие оболочки unix также поддерживают оператор * в части каталога пути. Нижеследующее работает как минимум bash и zsh:

ls */*.masked

Это вернет все файлы, которые заканчиваются .masked один каталог глубже.

Итак, чтобы переместить их:

mv */*.masked destination

Ответ 3

mv */*.masked .