У меня есть каталог, который имеет ~50k каталоги и ~1m файлы.
Я хочу изменить владельца (или разрешение) всех файлов, но не каталогов. Это вызвано тем, что я пробую к SCP дополнительные файлы от удаленного сервера, (~150k каталоги и ~3.6m файлы).
Каталог, который я имею, является частью удаленного каталога, но отказавшим scp...
Если я выполню SCP снова, то он запустится путем перезаписи файлов, которые я уже скопировал с удаленного каталога.
Вы можете использовать find
, у этого есть добавленное преимущество, которое эти ARG_MAX
не будет вызвано в процессе. Из родительского каталога:
find . -type f -exec chown newowner {} +
Для chmod
:
find . -type f -exec chmod 644 {} +
-type f
будет find
только файлы.
Другая альтернатива должна использовать xargs
. Необходимо будет использовать -print0
опция с find
и соответствие -0
опция xargs
:
find . -type f -print0 | xargs -0 chown newuser:newgroup
От man find
:
- print0
распечатайте полное имя файла на стандартном выводе, сопровождаемом нулевым символом. Это позволяет имена файлов, которые содержат новые строки или другие типы пробела, который будет правильно интерпретироваться программами, которые обрабатывают вывод находки. Эта опция соответствует-0 опциям xargs.
xargs
также правильно обработает ARG_MAX
.