Перемещение всех файлов из каталогов на один шаг вверх - PullRequest
10 голосов
/ 10 марта 2009

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

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?

Ответы [ 3 ]

16 голосов
/ 10 марта 2009

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

mv 1/*.masked targetDir

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

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

mv */*.masked targetDir

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

mv [0-9][0-9]/*.masked targetDir
5 голосов
/ 10 марта 2009
mv */*.masked .
5 голосов
/ 10 марта 2009

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

ls */*.masked

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

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

mv */*.masked destination
...