Menggunakan ls-l dengan sebuah pipa bagaimana saya bisa mendapatkannya untuk menampilkan file ke-8 dalam daftar tanpa rincian file

0

Saya mencari untuk menampilkan nama file 8 dalam direktori menggunakan ls-l dan pipa misalnya ls-l | wc -1 akan memberi saya hitungan tetapi yang ingin saya kembalikan adalah nama file ke-8 dalam daftar direktori apa pun itu. Saya telah melihat grep dan wildcard tetapi masih tidak melihat perintah mana yang akan memberi saya hasil yang saya cari.

Terima kasih

Erich
sumber
Silakan
mveroone

Jawaban:

4

mencoba

ls -l | head -n 9 | tail -n 1

jika Anda ingin hanya nama yang dapat Anda gunakan cutdi akhir

ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f8

tr adalah untuk mengganti ruang multiply dan tab dengan satu ruang

jcubic
sumber
+1 untuk tr -s ' ' | cuttriknya, saya tidak pernah memikirkannya karena beberapa alasan - saya biasanya menggunakan (g) awk saat mengekstraksi kolom.
Rich Homolka
1
Jika nama file berisi beberapa spasi secara berurutan, nama file yang dikembalikan akan salah karena spasinya diciutkan. Dan dalam hal ini, bahkan jika nama file hanya berisi satu ruang, itu tidak akan dikembalikan secara penuh karena hanya bidang 8 yang dikembalikan, yang merupakan nama file hingga ruang pertama . Juga, Anda tidak perlu ls -lseperti yang ditunjukkan jika Anda hanya ingin nama file, tetapi Anda juga tidak perlu ls -1; hanya lsakan melakukan (lihat superuser.com/q/424246/49184 ).
Daniel Andersson
1
Ini juga memberikan output yang salah pada sistem saya, karena ini tergantung pada lcoale untuk format tanggal. -f9diperlukan di sini (seperti juga disinggung dalam jawaban cokedude), tetapi seperti yang saya katakan, nama file dengan spasi akan salah. -f9-akan mengembalikan bidang 9 dan seterusnya dan lebih baik, tetapi sekali lagi, nama file dengan beberapa spasi secara berurutan akan tetap salah.
Daniel Andersson
2

Cara lain seperti ini.

ls -l | sed -n '9p'

Jika Anda hanya ingin nama file atau direktori maka gunakan ini.

ls -l | sed -n '9p' | awk '{print $9}'

jcubic apakah Anda yakin ini yang Anda inginkan?

ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f8

Saya akan berpikir dia ingin nama file atau direktori seperti ini.

ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f9

Cokedude
sumber
0
ls | awk 'NR==8'
  • Anda tidak perlu ls -lmendapatkan output 1-kolom, atau bahkan ls -1jika Anda melempar output ke pipa (lihat misalnya Apa pemisah ajaib antara nama file dalam output ls? ).
  • NR==8hanya akan mengembalikan true untuk baris 8, dan kemudian awktindakan standar adalah mencetaknya.
Daniel Andersson
sumber
0

Hanya saja, jangan gunakan -l

ls | kepala -8 | ekor -1

Anda mendapatkan nama file, lsmemesan file yang sama dengan ls -l.

Pawel Wisniewski
sumber