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

У меня есть каталог с ~50 тыс. Каталогов и ~1 млн. Файлов.

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

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

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

2 ответа

Решение

Ты можешь использовать 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,

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