То, как я делал это в прошлом, использует смола
в качестве посредника, но я уверен, что есть и другие ответы, более элегантные, чем этот.
Где у нас есть список файлов, отвечающих определенным критериям IE: все файлы в /usr меньше 1M
$ найти /usr -тип f -размер -1M
Что мы хотим скопировать на место /мнт/дст
.
Вы можете использовать tar в качестве вектора для упаковки/распаковки данных. IE
$ find /usr -type f -size -1M | tar --files-from=- -c | смолка -xv -C /mnt/dst
Первое смола
берет --files-от
который ожидает построчный список полных путей к файлам и создает tar-архив на стандартный вывод.
Второй смола
переключается на путь назначения с помощью -С
и распаковывает полученный из пайпа tarball.
Это приводит к следующему выводу (при использовании -v
во второй команде tar).
usr/lib/grub/i386-pc/fdt.lst
usr/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py
usr/lib/python3.6/site-packages/pip/operations/__init__.py
usr/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py
usr/lib/python3.6/site-packages/setuptools/_vendor/__init__.py
usr/lib/python3.6/site-packages/slip/__init__.py
usr/lib/python3.6/site-packages/slip/_wrappers/__init__.py
usr/lib/python3.6/site-packages/asn1crypto/_perf/__init__.py
...
...
Результирующий каталог назначения создает дерево (обрезанное для удобства чтения), которое должно быть тем, что вы ищете.
# дерево -L 3 /mnt/dst
/мнт/дст
âââ usr
âââ библиотека
âââ жратва
âââ node_modules
âââ python3.6
âââ lib64
âââ python3.6
ââ местный
ââ доля
ââ доля
âââ криптополитика
ââ док
âââ Грофф
âââ microcode_ctl
ââ мим
âââ пки
âââ texlive
âââ texmf
âââ вим
âââ X11
20 каталогов, 0 файлов