Как скопировать файлы из нескольких каталогов? [Дубликат]

На этот вопрос уже есть ответ:

У меня есть несколько текстовых файлов в нескольких каталогах, которые я хочу скопировать в другой. Что я могу сделать, вместо того, чтобы идти в каждый каталог и cp *.txt в этом каталоге?

3
задан 15.04.2020, 03:27

1 ответ

Если ни один из ответов в связанных темах не является тем, что вы ищете, вы можете рассмотреть возможность использования команды find, которая будет искать каталоги рекурсивно вниз от заданного родителя. Вы можете указать действие exec для выполнения с каждым из найденных им подходящих файлов - в этом случае вы захотите, чтобы оно выполнило cp для нового целевого каталога

find /path/to/parent -name '*.txt' -exec cp -t /path/to/newdir {} +

. {} заменяется файлами, которые он находит, а + в конце заставляет его пакетировать их, чтобы не переполнять максимальное количество аргументов, которое cp может обработать в одной команде. newdir должно уже существовать.

Поскольку вы перемещаете файлы из разных мест в одно место, существует вероятность того, что некоторые имена будут неуникальными, и поэтому вы можете позаботиться о том, чтобы предотвратить перезапись более ранней копии более поздней копией - вы это можно сделать, добавив опцию backup

find /path/to/parent -name '*.txt' -exec cp --backup=numbered -t /path/to/newdir {} +

, которая добавит простой пронумерованный суффикс к каждому дублирующему файлу. Вы можете добавить флаг -v или --verbose к cp, если вы хотите видеть текущий отчет о файлах по мере их копирования.

9
ответ дан 15.04.2020, 03:27

Теги

Похожие вопросы