У меня есть дерево каталогов следующим образом
/
--/Directory1
--/Directory2
-----/SubDir1
-----/SubDir2
Каждый из них имеет файл с расширением .mp4, который я ищу, и хочу перейти к другой папке. Я пробовал:
CP -RV ./*/*.mp4 ~ / foo
, однако, что только получает файлы из Directory1 и Directory2, и если я просто ищу * .mp4, я только ищите только корневой каталог.
Я хотел бы, чтобы вы знали, я на самом деле не делаю это в моем корневом каталоге, это просто пример, пожалуйста, не снисходительные комментарии, если я не пропустил что-то очень простое.
Если вы используете оболочку, которая поддерживает рекурсивное глобубинг, вы можете включить, чтобы EX.
shopt -s globstar # bash
Затем используйте
cp -v ./**/*.mp4 ~/foo
( -R
, здесь не подходит, предполагая, что . MP4
являются обычными файлами ). В качестве альтернативы, используйте Найти
для рекурсивного происхождения:
find . -type f -name '*.mp4' -exec cp -vt ~/foo {} +
Метод Globstar
потерпит неудачу, если количество совпадений достаточно велико; Метод метод
должен работать независимо.