Объяснение каждой строки в команде 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 часть заканчивается, и за ней следует какое-то другое действие. На практике это определяется одним из двух терминаторов, ; или же + с несколько иным значением (см. справочную страницу для поиска). Но потому что ; является метасимволом в оболочке, нам нужно защитить его от оболочки, убрав его (или поместив в кавычки).

Другие вопросы по тегам