GNU/Linux >> Belajar Linux >  >> Linux

"untuk File In" Secara Numerik Bukan Abjad??

Pertanyaan ini sudah memiliki jawaban di sini :Mengulangi folder dalam urutan numerik

(6 jawaban)
Tutup 3 tahun yang lalu.

Saya memiliki skrip yang menghasilkan indeks berdasarkan setiap file dalam folder. Semua nama file adalah nomor dengan ekstensi.

Bagaimana saya bisa memodifikasi loop saya untuk memprosesnya dalam urutan numerik?

for file in xml/*.xml; do
  ...
done

Jawaban yang Diterima:

Jika Anda memiliki GNU sort yang memiliki opsi untuk de-limit pada \0 pembatas yang dapat Anda lakukan. Dengan cara ini while loop akan mulai mendapatkan file dalam urutan yang diurutkan untuk Anda proses. Ganti printf pilihan dengan logika kustom Anda sendiri.

shopt -s nullglob

printf '%s\0' xml/*.xml | sort -zV | while read -rd '' file; do
    printf "%s\n" "$file"
done

shopt -u nullglob

nullglob pilihannya adalah untuk mencegah Shell memperluas gumpalan kosong jika tidak ada xml file ditemukan di folder saat ini. Opsi -u menghapusnya setelah pemrosesan Anda selesai.

Seperti yang ditunjukkan Tony Speight dengan tepat, jika Anda tidak ingin mengacaukan opsi shell (misalnya mungkin diaktifkan karena alasan lain), Anda bisa mengatur di sub-kulit dan membiarkan ekspansi glob terjadi

( shopt -s nullglob; printf '%s\0' xml/*.xml ) | sort -zV |  while read -rd '' file; do
    printf "%s\n" "$file"
done

Linux
  1. Urutkan Bagian Dari File?

  2. C fopen vs terbuka

  3. Tulis ke file .txt?

  1. Bagaimana memulihkan file yang terbuka tetapi terhapus di Linux menggunakan ln, bukan cp?

  2. Cron hanya berjalan sekali, bukan setiap menit

  3. cp -L vs cp -H

  1. cara mendekripsi file ecryptfs dengan kunci pribadi alih-alih frasa sandi

  2. Secara tidak sengaja menggunakan pengalihan keluaran > alih-alih pipa |

  3. Bagaimana saya melihat du dalam GB bukannya MB di linux?