Я пытаюсь запустить проверку PEP8 для большого дерева исходных текстов. Дерево состоит из смеси файлов на разных языках. Идея состоит в том, чтобы проверить все скрипты Python без явного перечисления их. Большинство этих файлов на самом деле не имеют .py
расширения. Есть ли простой способ найти все файлы со словом Python в shebang или найти все файлы, которые будут запускаться с Python при запуске?
shell-script
text-processing
search
Марко Чеппи
источник
источник
grep -l
он остановит чтение файла, как только найдет совпадение, для файлов без совпадения он прочитает весь файл. Он также будет находить совпадения в середине файлов, например, он может совпадать сshar
файлом, содержащим скрипты Python.С GNU, FreeBSD, NetBSD или OpenBSD (и, возможно, другими)
awk
:Будет смотреть только на первую строку каждого файла и будет запускать столько,
awk
сколько необходимо.nextfile
Выше утверждение не является стандартным , но находится в нескольких реализациях , включая GNU один (который, вероятно , где она возникла из).Хотя приведенный выше код, по-видимому, будет работать и в других реализациях,
nextfile
оператор не будет ничего делать там (будет распознаваться как выражение, состоящее из неустановленнойnextfile
переменной), так что это будет означать, что все файлы будут прочитаны полностью, а имя файла будет быть напечатан для каждой соответствующей строки.Если вы
awk
поддерживаетеFNR
(как в POSIX awks, но не в оригиналеawk
, а в Solaris/usr/xpg4/bin/awk
нет/usr/bin/awk
)nextfile
, вы можете написать:Который по-прежнему будет работать как
awk
можно меньше, но будет читать файлы полностью.Другой вариант , чтобы избежать полного чтения файлов и что будет работать с каждым
awk
и ,find
но будет означать , работает одинawk
на один файл будет выглядеть так :источник