Подтвердить что ты не робот

Найти. -type f -exec chmod 644 {};

почему эта работа не работает, я пытаюсь изменить все файлы на 644 abd all -d до 755:

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

я получаю: find: отсутствующий аргумент `-exec '  спасибо

4b9b3361

Ответ 1

Трубопровод к xargs является грязным способом сделать то, что можно сделать внутри find.

find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

Вы можете управлять еще большим количеством других параметров, например:

find . -type d -user harry -exec chown daisy {} \;

Вы можете делать очень интересные вещи с помощью find, и вы можете делать очень опасные вещи. Взгляните на "найти человека", это долго, но стоит быстро прочитать. И, как всегда помните:

  • Если вы root, это будет успешным.
  • Если вы в корне (/), у вас будет плохой день.
  • Использование /path/to/directory может сделать вещи намного более безопасными, поскольку вы четко определяете, где вы хотите найти для запуска.

Ответ 2

Хорошей альтернативой является следующее:

find . -type f | xargs chmod -v 644

и для каталогов:

find . -type d | xargs chmod -v 755

и быть более явным:

find . -type f | xargs -I{} chmod -v 644 {}

Ответ 3

Мне нужно так часто, что я создал функцию в моем файле ~/.bashrc:

chmodf() {
        find $2 -type f -exec chmod $1 {} \;
}
chmodd() {
        find $2 -type d -exec chmod $1 {} \;
}

Теперь я могу использовать эти ярлыки:

chmodd 0775 .
chmodf 0664 .