1

У меня есть иерархия папок, как это:

MainFolder
|
| - 01
| - 02
| - 03
| - 04
| - 05
| - 06
| - 07
| - 08
| - 09
| - 10

И внутри каждой из этих десяти папок у меня есть еще 10 папок и так далее. Всего у меня 10 уровней.

Я хотел бы переместить ВСЕ файлы, включая ВСЕ возможные расширения (включая zip и rar) в папку с именем FinalFolder.

Я пытаюсь использовать следующую команду:

find MainFolder -type f -print0 | xargs -0 mv -t FinalFolder

И "работает". В общем, я ловлю файлы 5k, но я знаю, что у меня есть файлы 25k, так что не все ловит. В чем может быть проблема? И что более важно, как это исправить?

1 ответ1

0

Используйте более простую команду поиска, чтобы сгладить исходный каталог.

Предупреждение: убедитесь, что целевой каталог существует первым !! (или вы можете получить один файл с именем FinalFolder, содержащий только один из ваших файлов)

 find MainFolder -type f -exec mv \{\} FinalFolder \;

РЕДАКТИРОВАТЬ

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

 find MainFolder -type f -exec cp --backup=numbered \{\} FinalFolder \;

Если это продолжает запрашивать подтверждение, то это, вероятно, связано с тем, что команда cp связывается с cp -i . В этом случае используйте /bin/cp вместо cp

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