У меня есть структура каталогов, которая содержит ряд файлов, которые названы так же, как в:
из dir1/тест
директория dir2/тест
dir3/тест
Я хочу найти каждый тестовый файл и скопировать его в другой каталог с уникальным (произвольным) именем файла, чтобы я мог проанализировать данные, которые они содержат.
Там может быть большое количество этих одноименных файлов содержится несколько слоев глубоко в структуре каталогов. Я могу использовать find для поиска файлов, но переименование (с помощью find) намекает на меня.
Может ли кто-нибудь предоставить рекомендации по этому вопросу?
Как скопировать и переименовать файлы с тем же именем


2 ответа
- source_dir является корневой каталог формы, где вы хотите, чтобы искать файлы.
- destination_dir - это каталог, где вы хотите скопировать или переместить файлы
- *.doc - это имя файла или шаблон файла для поиска.
вы можете скопировать файлы со следующей командой! обратите внимание, что --backup=numbered
создаст численно увеличенный суффикс, если файл с таким именем уже в каталоге назначения.
find /source_dir -type f -name *.doc | xargs -I '{}' cp --backup=numbered {} /destination_dir
вы можете движение файлы со следующей командой! обратите внимание, что --backup=t
создаст численно увеличенный суффикс, если файл с таким именем уже находится в каталоге назначения.
find /source_dir -type f -name *.doc | xargs -I '{}' mv --backup=t {} /destination_dir
вы также можете использовать эти команды с sudo если вы могли бы иметь в поиске назначения соответствующие файлы, принадлежащие другому пользователю.
если вы хотите подробный вывод этих команд добавить в после --backup=numbered
или --backup=t
.

вы можете заменить в пути с другого персонажа и использовать его в качестве нового имени файла:
#!/bin/bash
for f in /dir*/*
do
cp "$f" "${f//\//.}"
done

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]