Если у вас есть GNU cp
(li Nux) вы можете:
cp --parent folder*/**/*.a /path/to/destination
или с двумя конвейеру tar
tar czf - folder*/**/*.a | tar -C /path/to/dest -xvf -
или
find folder* -name \*.a -print | cpio -o | (cd /path/to/dest ; cpio -idv)
или лучше, с замечанием @ JonathanLeffler в
find folder* -name '*.a' -print | cpio -pvd /path/to/dest
#and with null terminated
find ... -print0 | cpio -p0dv /path/to/dest
**
среднего(От человека Баша)
- Соответствует любую строку, в том числе пустой строки. Когда опция оболочки globstar включена, а * используется в контексте расширения пути, два смежных * s, используемые как один шаблон, будут соответствовать всем файлам и нулевым или более каталогам и подкаталогам. Если за ним следует a, два смежных * s будут соответствуют только каталогам и подкаталогам.
globstar
(по умолчанию на)
globstar Если установлено, шаблон ** используется в контексте расширительный путь к файлу будет соответствовать всем файлам и ноль или более каталогов и подкаталогов. Если за шаблоном следуют директории /, только каталоги и подкаталоги .
Для чего предназначены двойные звездочки? –
Я почти собирался использовать 'cpio', но вы забыли о опции' -p': 'find folder * -name '* .a' -print | cpio -pvd/path/to/dest'. _ [... прошло немного времени ...] _ У вас есть мой голос, теперь вы его исправили.(И, FWIW, Mac 'cpio' имеет опцию' -0' для обработки списков имен, завершенных нулевыми байтами, вероятно, GNU 'cpio' тоже, поэтому' find ... -print0 | cpio -p0dv/path/to/dest 'тоже будет хорошо работать. –
@JonathanLeffler ДА! Youre right!;) :) Отредактировано - добавлено! – jm666