Сценарий оболочки Unix, который печатает первую строку любых файлов README в каталоге или подкаталогах - PullRequest
0 голосов
/ 24 февраля 2012

Кто-нибудь знает, как я мог бы написать сценарий оболочки Unix (ksh), который будет печатать первую строку любых файлов, которые соответствуют имени «README» в текущем и подкаталогах?

Ответы [ 4 ]

6 голосов
/ 24 февраля 2012

Использование find с head

find . -name 'README' -exec head -1 {} \;

Почему \;?

С найти руководство

-exec команда;
Выполнить команду;true, если возвращается 0 статус.Все последующие аргументы для поиска считаются аргументами команды до тех пор, пока аргумент, состоящий из ;' is encountered. The string {} ', не будет заменен текущим именем файла, обрабатываемым везде, где оно встречается в аргументах команды, а не только в аргументах, гдеон один, как в некоторых версиях find.Обе эти конструкции могут нуждаться в экранировании (с `\ ') или заключаться в кавычки, чтобы защитить их от раскрытия оболочкой .В разделе ПРИМЕРЫ приведены примеры использования опции -exec.Указанная команда запускается один раз для каждого соответствующего файла.Команда выполняется в начальном каталоге.Существуют неизбежные проблемы безопасности, связанные с использованием действия -exec;Вместо этого вы должны использовать опцию -execdir.

3 голосов
/ 24 февраля 2012
head -1 `find . -name README`

Должен делать то, что вы после.

3 голосов
/ 24 февраля 2012

Вам даже не нужен скрипт, только одна строка:

head -n 1 `find . -name README`
0 голосов
/ 24 февраля 2012

также find . -name README | xargs head -1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...