файлы chmod только во всех подкаталогах


54

Пожалуйста, кто-нибудь, помогите мне с chmod, у меня следующая структура файла

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

Как мне chmod 655 ко всем файлам в dir1 и всех subdir? Таким образом, все файлы будут иметь разрешение 655, и все каталоги останутся без изменений.

Спасибо

Ответы:


108

Лучше использовать

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

Другое предлагаемое решение от @sagarchalise не будет работать, если имена файлов содержат пробелы или начинаются с тире.


16
Кроме того, для chmod всех каталогов вы можете использовать find . -type d -exec chmod 755 {} +для изменения всех каталогов на 755.
Kris Harper

2
Для чего нужен +?
Бретцки

3
@Brettski: +знак расширяется findдо списка путей к файлам (или его части, если они слишком длинные).
энзотиб

3
Для чего?
Ориентир

2
--Означает конец параметров командной строки. Это предотвращает интерпретацию файла, начинающегося с дефиса, как параметра командной строки, так как он будет указан после --.
Тим Тисдалл

8

Я думаю, что идти внутрь dir1и

find . -type f | xargs chmod 655

сделает свое дело.


это тоже работает, но у меня есть предупреждение с «Нет такого файла или каталога»
netic

@manetic: это зависит, как сказано в моем ответе, от имен файлов, содержащих пробелы.
энзотиб

4
Для полноты, изменив его, чтобы найти. -тип f -print0 | Я полагаю, что xargs -0 chmod 655 исправит проблему с пространством, хотя ответ @ enzotib более краткий
matt freake

что сказал Мэтт Фрейк
Сергей Колодяжный
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.