Как вызвать текстовый файл как список команд

Проблема: 245,000 плюс файлы, находящиеся в нескольких recup_dir папках (вывод от выполненного photo_rec) бывший должный быть перемещенным в централизованную папку для дальнейших операций восстановления. Все файлы являются *.jpg файлами.

У меня есть текстовый файл под названием newlist1.txt, который я отформатировал следующими 4 способами. И измениться на каждое разнообразие, польза находит/заменяет, что редактор важен. эти файлы сценария находятся в папке/disks/Keep/new-s1-recov. Я знаю, я, возможно, использовал просто. указать, где к mv файлы, но первоначально, сценарии были в другой папке, и период, не будет достаточно.

  1. echo !(recov1/recup_dir.1033/f340010.jpg)| xargs mv -t /disks/Keep/new-s1-recov

  2. echo !recov1/recup_dir.1034/f3442050jpg| xargs mv -t /disks/Keep/new-s1-recov

  3. echo recov1/recup_dir.1034/f344208.jpg| xargs mv -t /disks/Keep/new-s1-recov

  4. ls recov1/recup_dir.1034/f344208.jpg| xargs mv -t /disks/Keep/new-s1-recov

последние два примера, 3 и 4, работают правильно при выполнении из командной строки. Ни один из примеров не работает, когда я ввожу

sh newlist1.txt

или

bash newlist1.txt

Вещь, у меня есть более чем 245 000 файлов, которые должны быть перемещены. Почему я не использую файловый менеджер и делаю группы нескольких сотен за один раз? Поскольку файловый менеджер является возможно худшей частью программного обеспечения в Ubuntu 16.04.3. Так, командная строка является предпочтительным способом выполнить эту задачу. Если я проведу несколько дней, выясняя, как сделать его как это, я буду считать это временем хорошо потраченный. Я потратил впустую больше, чем это на файловом менеджере, ожидающем экрана, чтобы выйти из его кажущегося изумления и наконец показать, что перемещение нескольких файлов было наконец выполнено.

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

Так, вопрос: Как я форматирую эти 245 000 строк (использующий нано текстовый редактор, который имеет нахождение/заменение, не имея необходимость добавлять некоторое дополнительное программное обеспечение к gedit), и получите его в файл, который может быть вызван любой командой так, чтобы Ubuntu не дала мне "СЛИШКОМ МНОГО АРГУМЕНТОВ" и умерла. Это отправит каждую строку как команду, и когда это будет сделано, это выполнит следующую строку и так далее, пока это не закончено.

0
задан 27 February 2018 в 18:02

1 ответ

Так как 245 000 имен файлов, вероятно, не будут соответствовать на командной строке, использовать find и xargs (man find;man xargs), и сделайте что-то как:

find recov1/ -type f -iname '*.jpg' -print0 | \
    xargs -0 --no-run-if-empty mv -t /disks/Keep/new-s1-recov

Я всегда использую find ... -print0 и xargs -0 в случае, если имена файлов содержат пробелы. Вам, вероятно, придется использовать xarg переключатели --max-args= или --max-chars= если xargs сбои. Вы могли также заменить mv с echo mv для тестирования.

0
ответ дан 30 October 2019 в 09:04

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

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