Проблема: 245 000 плюс файлы, находящиеся в нескольких папках recup_dir (вывод из файла photo_rec run), которые необходимо перенести в централизованную папку для дальнейших операций восстановления. Все файлы являются файлами * .jpg.
У меня есть текстовый файл с именем newlist1.txt, который я форматировал следующими четырьмя способами. И чтобы перейти к каждому разнообразию, необходим хороший редактор поиска / замены. эти файлы сценариев находятся в папке / дисках / Keep / new-s1-recov. Я знаю, я мог бы просто использовать. чтобы указать, где mv файлы, но изначально сценарии находились в другой папке, и этого периода не хватило бы.
echo !(recov1/recup_dir.1033/f340010.jpg)| xargs mv -t /disks/Keep/new-s1-recov echo !recov1/recup_dir.1034/f3442050jpg| xargs mv -t /disks/Keep/new-s1-recov echo recov1/recup_dir.1034/f344208.jpg| xargs mv -t /disks/Keep/new-s1-recov ls recov1/recup_dir.1034/f344208.jpg| xargs mv -t /disks/Keep/new-s1-recovпоследние два примера, 3 & amp; 4, работайте правильно, когда выполняется из командной строки. Ни один из примеров не работает, когда я набираю
sh newlist1.txt
или
bash newlist1.txt
Дело в том, что у меня есть более 245000 файлов, которые нужно переместить. Почему я не использую диспетчер файлов и не группирую несколько сотен одновременно? Поскольку файловый менеджер, возможно, является наихудшим программным обеспечением в Ubuntu 16.04.3. Таким образом, командная строка является предпочтительным способом выполнения этой задачи. Если я потрачу несколько дней на выяснение того, как это сделать, я буду считать, что это хорошо потрачено. Я потратил больше времени на файловый менеджер, ожидая, когда экран выйдет из его кажущегося оцепенения и, наконец, покажет, что движение нескольких файлов наконец-то было завершено.
Форматирование выше было взято из другого примеры, которые я нашел в разное время. Я попытался приспособить свою проблему к чужому решению.
Итак, вопрос в следующем: как мне форматировать строки 245000 (используя nano texteditor, который имеет поиск / замену без необходимости добавления дополнительного программного обеспечения в gedit) и вставлять его в файл, который можно вызвать по какой-либо команде, чтобы Ubuntu не дал мне «СЛИШКОМ МНОГО АРГУМЕНТОВ» и умер. Он будет отправлять каждую строку в виде команды, и когда это будет сделано, она выполнит следующую строку и так далее, пока она не будет завершена.
Поскольку 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 для тестирования.
Поскольку 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 для тестирования.