Cercare file con linee lunghe

Uno dei filtri più usati nella shell linux è grep, che serve a individuare delle stringhe all'interno di un file di testo. Se invece si vogliono individuare le linee più lunghe di una certa dimensione grep non lo consente. Per questo scopo ci viene in aiuto awk, che è però più complesso da usare di grep, infatti è un vero e proprio linguaggio di programmazione. Per cercare e stampare le linee più lunghe di una certa dimensione (nell'esempio 500 caratteri) presenti in un file è si può usare la seguente linea di comando
awk '{ if (length($0) >500) {print $0}}' nomedelfile
Possiamo cercare all'interno di una cartella tutti i file che hanno linee con più di 500 caratteri, e stampare il nome del file e la linea, in questo caso la linea di comando diventa:
awk '{ if (length($0) >500) {printf FILENAME; printf ":"; print $0}}' *
L'output riporterà il nomefile, seguito da : e la riga. per ogni riga di dimensione maggiore di 500 caratteri. Combinando questo comando con il potentissimo comando find possiamo ad esempio cercare tutti i file con estensione .php a partire dalla cartella corrente e in tutte le sottocartelle con linee di dimensione superiore a 500 caratteri.
find . -type f -name \*\.php -print0 | xargs -0 -i awk '{ if (length($0) >500) {printf FILENAME; printf ":"; print $0}}' {}