2016-10-02 2 views
-1

Я хотел бы знать значение позади каждую строку этой команды:Объяснения каждой строки в -exec команды найти в

find . -type f -exec chmod 644 {} \; 
  • find . -type f означает найти все файлы в этой папке
  • -exec chmod 644 выполнить chmod 644 команда по всем этим файлам

Зачем нам {} и \;? для чего они?

+1

Вы по крайней мере [читаете документацию?] (Http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html) –

ответ

2
  • . ... начать поиск в текущем каталоге
  • -type f ... найти файлы типа "файл" (в отличие от "каталог", "ссылка" и т.д.)
  • -exec ... \; .. . для каждого файла найден, запустите команду ...
  • chmod ... команда для exec будет chmod (права доступа изменения для файла)
  • 644 ... права доступа будет изменен на (читать, писать) для владельца файла и (читать) для всех остальных.
  • {} ... эта часть будет заменена на фактическое имя файла на find

Зачем нам нужны {} и \; ? в чем их смысл?

{} будет заменен на имя файла, найденное find.

\; прекращает действие -exec действие find. Нам это нужно, потому что команда в -exec может быть до тех пор, пока вы этого хотите, а после этого -exec вы можете захотеть найти другие действия или предикаты. Таким образом, вам нужны некоторые средства для определения того, что одна часть -exec заканчивается, а затем выполняется другое действие поиска. На практике это определяется одним из двух терминаторов: ; или + с несколько иным значением (читайте справочную страницу для поиска). Но так как ; является метасимволом в оболочке, нам нужно защитить его от оболочки, убегая от него (или помещая его в кавычки).

+0

благодарим вас за подробное и информативное объяснение! –