Как я могу копировать или перемещать изображения из тысяч папок в одну папку? [дубликат]

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

У меня около 2855 папок, содержащих большое количество изображений, и я хочу скопировать или переместить все изображения в одну папку.

Пожалуйста, дайте подробное объяснение.

0
задан 16 November 2018 в 13:58

2 ответа

Это - Очень Плохая Идея.

Однако предполагая, что Ваши названия картинки уникальны (хотя дубликаты будут обработаны при помощи mv --backups-numbered), и все Ваши содержащие изображение каталоги находятся под названным каталогом $HOME/source, и содержите ТОЛЬКО изображения (никакие файлы, которые не должны быть перемещены), и, имена файлов могли бы содержать глупые символы, и что место назначения $HOME/destination, затем...

Сначала читайте man find, man xargs и man mv. Затем простое

find $HOME/source -type f -print0 |\
    xargs -0 --no-run-if-empty mv --target-directory=$HOME/destination/ --backup=numbered

Перечитать man find, man xargs и man mv для подробного объяснения.

После того, как это заканчивается, Вас оставят с большим количеством пустых каталогов под $HOME/source, который может быть удален с

find $HOME/source -depth -type d -print0 | xargs -0 --no-run-if-empty rmdir

Читать man rmdir.

3
ответ дан 27 October 2019 в 04:26

Каталог Change cd к каталогу, где все папки. Это переместит все файлы в Вашу рабочую папку и подпапки к одной папке. Различные файлы с тем же именем останутся в исходных папках

Выполните команды с осторожностью. Выполнение от неправильного местоположения может вызвать потерю важных файлов.

Выполненный:

find . -type f -print0 | xargs -0 -I _ mv -vn _ /path/to/copy/

если Вы хотите файлы с некоторым расширением, например, .jpg

Выполненный:

find . \( -name '*.jpg' -or -name '*.png' \) -type f -print0 | xargs -0 -I _ mv -vn _ /path/to/copy/
0
ответ дан 27 October 2019 в 04:26

Другие вопросы по тегам:

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