Перемещение всех файлов из каталогов Один шаг вверх
У меня есть каталоги, которые выглядят как
[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 .