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

StackOverflow https://stackoverflow.com/questions/628617

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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?

Это было полезно?

Решение

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

mv 1/*.masked targetDir

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

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

mv */*.masked targetDir

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

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

Другие советы

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

ls */*.masked

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

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

mv */*.masked destination
mv */*.masked .
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top