Смена владельца файлов рекурсивно, но не каталогов
У меня есть каталог с ~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,