Измените владельца файлов рекурсивно, но не каталоги

У меня есть каталог, который имеет ~50k каталоги и ~1m файлы.

Я хочу изменить владельца (или разрешение) всех файлов, но не каталогов. Это вызвано тем, что я пробую к SCP дополнительные файлы от удаленного сервера, (~150k каталоги и ~3.6m файлы).

Каталог, который я имею, является частью удаленного каталога, но отказавшим scp...

Если я выполню SCP снова, то он запустится путем перезаписи файлов, которые я уже скопировал с удаленного каталога.

14
задан 14 October 2015 в 23:35

2 ответа

Вы можете использовать find, у этого есть добавленное преимущество, которое эти ARG_MAX не будет вызвано в процессе. Из родительского каталога:

find . -type f -exec chown newowner {} +

Для chmod:

find . -type f -exec chmod 644 {} +

-type f будет find только файлы.

20
ответ дан 23 November 2019 в 02:56

Другая альтернатива должна использовать xargs. Необходимо будет использовать -print0 опция с find и соответствие -0 опция xargs:

find . -type f -print0 | xargs -0 chown newuser:newgroup

От man find:

- print0

распечатайте полное имя файла на стандартном выводе, сопровождаемом нулевым символом. Это позволяет имена файлов, которые содержат новые строки или другие типы пробела, который будет правильно интерпретироваться программами, которые обрабатывают вывод находки. Эта опция соответствует-0 опциям xargs.

xargs также правильно обработает ARG_MAX.

5
ответ дан 23 November 2019 в 02:56

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

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