Чтобы переместить любой файл с именем fileA.txt
или fileB.txt
в его непосредственный родительский каталог:
find . -maxdepth 4 -type f -name 'file[AB].txt' -execdir mv {} ../ \;
Или, чтобы переместить любой файл с именем fileA.txt
или fileB.bb
в его непосредственный родительский каталог:
find . -maxdepth 4 -type f \( -name 'fileA.txt' -o -name 'fileB.bb' \) -execdir mv {} ../ \;
Как это устроено
.
говоритfind
начать с текущей директории. (Вы можете заменить это любым каталогом, который вам нравится.-maxdepth 4
говоритfind
не спускаться более чем на четыре уровня вглубь структуры каталогов.-type f
говоритfind
искать только обычные файлы.-name 'file[AB].txt'
говоритfind
искать только те файлы, которые соответствуют глобуfile[AB].txt
.В качестве альтернативы, чтобы соответствовать либо,
fileA.txt
либоfileB.bb
, мы используем два-name
теста в сочетании с логическим или (-o
) и сгруппированы вместе с паренами:\( -name 'fileA.txt' -o -name 'fileB.bb' \)
-execdir mv {} ../ \;
сообщаетfind
chdir каталогу файла и запускает команду оболочки,mv {} ../
гдеfind
заменит{}
действительное имя файла. Выражение../
Unix-говорят для родительского каталога. Трейлинг\;
просто отмечаетfind
конец команды оболочки