почему эта работа не работает, я пытаюсь изменить все файлы на 644 abd all -d до 755:
find . -type f -exec chmod 644 {} ;
я получаю: find: отсутствующий аргумент `-exec '
спасибо
Ответ 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: