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