Perintah berikut harus melakukan pekerjaan: -
find /DirHead|while read -r f; do echo $(wc -c <<<$f): $f; done|sort -n|tail -n 1
Mengikuti komentar Gordon Davisson, ada alternatif yang lebih rapi: -
find /DirHead | awk '{print length($0), $0}' | sort -n | tail -n 1
Anda dapat mengatur /DirHeadke /, tetapi ini akan sangat lambat, jadi jika Anda memiliki ide di mana jalan panjang ini berada, itu akan mempercepat jika Anda menggunakannya.
Ini tidak akan mengikuti tautan simbolis: jika Anda ingin melakukan ini, Anda perlu menambahkan opsi find.
Untuk setiap file wc -cmenghitung jumlah byte dalam nama file dari input standar, dan jumlah ini adalah output dengan nama file; baris terakhir dari jenis numerik kemudian akan menjadi yang terpanjang, atau tail -n 10akan daftar 10 terpanjang.
Saya menguji ini di Ubuntu, tidak memiliki akses mudah ke OS / X.
while readloop denganawk '{print length($0), $0}'. BTW, saya mengujinya (baik varianwhile readdanawk) pada macOS dan juga berfungsi di sana.