GNU/Linux >> Belajar Linux >  >> Linux

Mengulangi setiap baris keluaran ls -l

Setel IFS ke baris baru, seperti ini:

IFS='
'
for x in `ls -l $1`; do echo $x; done

Letakkan sub-kulit di sekitarnya jika Anda tidak ingin menyetel IFS secara permanen:

(IFS='
'
for x in `ls -l $1`; do echo $x; done)

Atau gunakan while | baca sebagai gantinya:

ls -l $1 | while read x; do echo $x; done

Satu opsi lagi, yang menjalankan while/read pada level shell yang sama:

while read x; do echo $x; done << EOF
$(ls -l $1)
EOF

Seperti yang telah disebutkan, awk adalah alat yang tepat untuk ini. Jika Anda tidak ingin menggunakan awk, alih-alih mem-parsing output "ls -l" baris demi baris, Anda dapat mengulangi semua file dan melakukan "ls -l" untuk setiap file seperti ini:

for x in * ; do echo `ls -ld $x` ; done

Itu tergantung apa yang ingin Anda lakukan dengan setiap baris. awk adalah utilitas yang berguna untuk jenis pemrosesan ini. Contoh:

 ls -l | awk '{print $9, $5}'

.. di sistem saya mencetak nama dan ukuran setiap item di direktori.


Linux
  1. Cara Menyisipkan Teks di awal setiap baris di Vim

  2. Bagaimana Melewati Garis File?

  3. Proses Setiap Baris Output Dari `ping` Segera Di Pipeline?

  1. Bagaimana Cara Membunuh Baris Perintah Chromium Melalui Ssh?

  2. Di Bash, bagaimana cara menambahkan string setelah setiap baris dalam file?

  3. Bagaimana cara menghitung jumlah tab di setiap baris menggunakan skrip shell?

  1. Menghitung Karakter Setiap Baris Dengan Wc?

  2. Bash Script:Bagaimana Menetapkan Setiap Baris Perintah Output Ke Nilai Dalam Array?

  3. Dapatkan baris pertama dari keluaran perintah shell