Перемещение файлов из специально названных папок / перемещение файлов на один уровень

Я использую его больше года, через 3 или 4 различных обновления версии ubuntu и никогда не испытывал проблем. Если вы допустили ошибку, добавив ppa, программа / с не работает (обычно из-за того, что эти пакеты являются альфами или бета-версиями) есть возможность очистить это ppa и восстановить de debs из официальных репозиториев.

На стороне рабочего стола приложения есть опция «резервное копирование / восстановление», поэтому вы можете использовать все, что захотите, с вашей конфигурацией и восстановить, если есть проблема.

Это первая вещь, которую я устанавливаю в новой установке ubuntu, я бы хотел, чтобы это была debian версия.

Salut

1
задан 27 May 2015 в 15:58

2 ответа

Следующие файлы будут перемещать все файлы .jpg в соответствующие родительские каталоги, если файлы .jpg находятся только под каталогом с именем photos (может быть несколько каталогов с именем photos):

find . -type f -path '*/photos/*' -not -path '*/photos/*/*' -name '*.jpg' \
-execdir mv -i {} .. \;

-path '*/photos/*' гарантирует, что путь будет содержать photos, но файлы могут находиться только в каталоге photos (-not -path '*/photos/*/*').

Также обратите внимание, что если каталоги не путешествовать (не photos) фиксированы и меньше по номерам или имеют определенные шаблоны, тогда вас может заинтересовать -prune.

1
ответ дан 23 May 2018 в 20:13
  • 1
    Вероятно, я получил ошибку find: paths must precede expression: -execdir из-за косой черты после jpg '. После удаления этой косой черты файлы не перемещаются. – JohnnyBizzle 27 May 2015 в 20:41
  • 2
    @JohnnyBizzle Возможно, вы удалили цитаты. Цитаты важны ... используйте точно так же, как я. – heemayl 27 May 2015 в 20:46

Если все ваши целевые файлы находятся в каталогах с именем photos, вы можете сделать что-то вроде:

find . -type d -name photos -exec bash -c 'cd {} && mv *jpg ../' \;

Это будет искать имена каталогов photos, а затем запустить оболочку bash, которая будет [ f4] в каждый из них и переместить все .jpg файлы в родительский каталог.

1
ответ дан 23 May 2018 в 20:13
  • 1
    Почему имя каталога не в кавычках? PS. Не работает. – JohnnyBizzle 27 May 2015 в 20:48
  • 2
    @JohnnyBizzle нет необходимости в цитатах, нет подстановочных знаков, и это не переменная, а простая строка. Как это случилось? Вам нужно запустить его из родительского каталога фотографий dirs. Он будет работать до тех пор, пока все целевые папки будут названы точно photos – terdon♦ 27 May 2015 в 20:53
  • 3
    Команда запускалась без ошибок, она просто не перемещала файлы. – JohnnyBizzle 28 May 2015 в 10:33
  • 4
    @JohnnyBizzle можно было бы назвать каталоги Photos? Вы запустили его из правильного каталога? Попробуйте запустить find /home/terdon/foo/ -type d -name photos -exec bash -c "ls {}/*" \;, это что-то возвращает? Если нет, вы не в том месте, или в каталогах есть разные имена. Не стесняйтесь пинговать меня в чате , я был бы рад помочь. – terdon♦ 28 May 2015 в 17:03

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

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