2

Можно ли использовать только командную строку, чтобы использовать что-то вроде команды cp или rsync для сканирования жесткого диска, ищущего только файлы изображений / видео? А может быть, в процессе их копирования в другое место, сохраняя имена / пути к папкам в новом месте?

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

2 ответа2

4

Вы можете использовать find для поиска интересующих вас файлов, а именно:

find /mnt/hd1 -name \*.jpg

будет искать файлы jpg (ну, для файлов с расширением .jpg) в каталоге /mnt /hd1. Если вы хотите просто скопировать эти файлы куда-нибудь, вы можете:

find /mnt/hd1 -name \*.jpg -exec cp {} /mnt/dest

Это запустит команду cp для каждого найденного файла в каталоге /mnt /dest.

Надеюсь, поможет :)

2

Другая возможность, если вы не хотите автоматизировать его в одном скрипте, это использовать команду find для создания скрипта bash. Затем запустите скрипт bash. Таким образом, вы также можете определить происхождение файла.

Кроме того, я бы немного изменил вышеприведенное на всякий случай, если у вас есть дубликаты имен файлов, если вы можете подозревать это в вашей среде. Вам понадобится проверка ошибок в вашем скрипте.

Также вы хотите сохранить путь к каталогу?

т.е. если файл здесь

/source/a/b/c/d/e.jpg

Вы хотите скопировать это в

/dest/a/b/c/d/e.jpg?

или же

/dest/e.jpg?

Так что пример может быть

find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh

Это скопирует только в один каталог / резервную копию

Чтобы сохранить, вы могли бы сделать

(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh

Но тогда вы захотите сначала создать все каталоги

(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh

Сила этого заключается в том, что вы также можете просмотреть сценарии и убедиться, что все выглядит хорошо, прежде чем запускать команды. Я несколько раз сжигал команду с ... эээ ... неожиданными результатами :)

Кроме того, наличие сценария также дает вам отчет о том, что вы будете делать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .