Найти файлы, где первая строка - одно слово или меньше - PullRequest
0 голосов
/ 26 января 2020

Я на Ма c Os 10.14.6 и у меня есть каталог, который содержит несколько файлов. Я хотел бы распечатать список файлов, где первая строка - одно слово или меньше.

Как я могу это сделать?


Шаги, которые я пробовал: awk имеет функцию, которая может использоваться для подсчета слов:

awk '/^.+\|\w+ \|/'

Это будет использоваться для поиска всех строк, содержащих одно слово. Однако я не уверен, как ограничить его первой строкой каждого файла.

1 Ответ

3 голосов
/ 26 января 2020

Не могли бы вы попробовать следующее, я использую опцию nextfile GNU awk, которая поможет нам сэкономить циклы / время, так как после проверки самой первой строки Input_file нам не нужно читать полный Input_file.

find '/your_path/' -type f -exec awk 'FNR==1{if(NF<=1){print FILENAME};nextfile}' {} \+

Здесь следует отметить, что в качестве пробела используется разделитель поля awk (по умолчанию awk).



ИЛИ, если вы не У вас нет опции nextfile в вашей awk, попробуйте затем, где я выхожу после прочтения самой первой строки, которая сохранит наши циклы и НЕ будет читать весь файл после проверки 1-й строки.

find '/your_path/'-type f -exec awk 'FNR==1{if(NF<=1){print FILENAME};exit}' {} \;
...