Jika Anda tar
direktori secara rekursif, itu hanya menggunakan urutan dari os readdir
.
Tetapi dalam beberapa kasus itu bagus untuk tar file diurutkan.
Apa cara yang baik untuk membuat direktori yang diurutkan berdasarkan abjad?
Catatan, untuk keperluan pertanyaan ini, gnu-tar pada sistem Linux biasa tidak masalah.
Jawaban:
Untuk GNU
tar
:Anda mungkin juga ingin melihatnya
--preserve-order
.sumber
--sort
diperkenalkan di versi tar 1.28.--preserve-order
tidak relevan dengan pertanyaan ini.tar: Exiting with failure status due to previous errors
kesalahan. @mhsmithDengan
zsh
, alih-alih:Menggunakan:
Anda dapat melakukan hal yang sama dengan versi terbaru
bash -O globstar -O dotglob
dengan:Atau versi terbaru
FIGNORE='@(.|..)' ksh93 -o globstar
dengan:pax
adalah perintah standar untuk membuattar
file. Outputnya menuju stdout. Gumpalan shell diurutkan berdasarkan nama.Jika Anda mengalami kesalahan pada daftar Arg , Anda dapat mengubah ke:
(meskipun tidak semua
pax
implementasi mendukung-0
).sumber
tar
itu sendiri tidak dapat melakukan ini, jadi Anda harus membuatnya dari daftar yang dipesan dengan benar. Pada prinsipnya Anda kemudian dapat menggunakantar
's-T
pilihan, tetapi tidak ada cara untuk menentukan bahwa nama file dalam daftar yang harus NUL dihentikan. Jadi, jika Anda memiliki nama file dengan baris baru di dalamnya (yang diizinkan) ini akan rusak.Opsi yang lebih baik adalah menggunakan
cpio
untuk menghasilkan file karena menerima daftar nama file yang diakhiri NUL dan dapat menghasilkan file tar.Jika
tar
perintah Anda adalah:Maka untuk ini akan diurutkan berdasarkan nama yang harus Anda lakukan (dengan asumsi GNU find and cpio):
Ini memiliki kekurangan meskipun subdirektori ditempatkan di antara nama file. Anda dapat melakukan trik dengan
find
s -printf0 menentukan direktori dan informasi kedalaman dan menyortir dengansort -n
tetapi itu juga mempengaruhi bagaimana file dengan angka diurutkan dalam direktori.Jika hal di atas tidak memuaskan Anda mungkin bisa menggunakan program python kecil berdasarkan
os.walk()
untuk menghasilkan pemesanan yang Anda inginkan dengan kontrol penuh (kedalaman pertama, berdasarkan extenion dll), tetapi jika Anda pergi rute itu Anda mungkin juga dropcpio
dan tuliskantar
file dengantarfile
modul python .sumber