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 /DirHead
ke /
, 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 -c
menghitung 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 10
akan daftar 10 terpanjang.
Saya menguji ini di Ubuntu, tidak memiliki akses mudah ke OS / X.
while read
loop denganawk '{print length($0), $0}'
. BTW, saya mengujinya (baik varianwhile read
danawk
) pada macOS dan juga berfungsi di sana.