Объяснение каждой строки в команде find -exec
Я хотел бы знать значение каждой строки этой команды:
find . -type f -exec chmod 644 {} \;
find . -type f
значит найти все файлы в этой папке-exec chmod 644
выполнятьchmod 644
Команда на все эти файлы
Зачем нам {}
а также \;
? для чего они?
1 ответ
Решение
.
... начать поиск в текущем каталоге-type f
... найти файлы типа "file" (в отличие от "directory", "link" и т. д.)-exec ... \;
... для каждого найденного файла выполните команду...
chmod
... команда дляexec
будетchmod
(изменить права доступа к файлу)644
... права доступа будут изменены на (чтение, запись) для владельца файла и (чтение) для всех остальных.{}
... эта часть будет заменена фактическим именем файлаfind
зачем нам {} и \; ? в чем их смысл?
{}
будет заменено именем файла, найденным find
,
\;
завершает -exec
действие find
, Нам это нужно, потому что команда в -exec
может быть столько, сколько вы хотите, и после этого -exec
Вы можете захотеть иметь другие действия или предикаты поиска. Так что вам нужны средства для определения этого -exec
часть заканчивается, и за ней следует какое-то другое действие. На практике это определяется одним из двух терминаторов, ;
или же +
с несколько иным значением (см. справочную страницу для поиска). Но потому что ;
является метасимволом в оболочке, нам нужно защитить его от оболочки, убрав его (или поместив в кавычки).