Saya harus bisa mengurutkan abjad output find
sebelum mengirimnya ke perintah. Memasuki | sort |
antara tidak berhasil, jadi apa yang bisa saya lakukan?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Gunakan find
seperti biasa dan batasi baris Anda dengan NUL. GNU sort
dapat mengatasinya dengan tombol -z:
find . -print0 | sort -z | xargs -r0 yourcommand
Beberapa versi sort
memiliki -z
opsi, yang memungkinkan untuk catatan yang diakhiri dengan nol.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Selain itu, Anda juga dapat menulis skrip tingkat tinggi untuk melakukannya:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Tambahkan -r
opsi untuk xargs
memastikan bahwa myCommand
itu dipanggil dengan argumen.
.
berbeda ... Dengansort
itu berakhir di akhir daftar ... denganpython
itu agak ke atas. (mungkin python macam denganLC_COLLATE=C
)-t \0
opsi untuk sort (yang merupakan-z
sinonim)|sort
solusi ini adalah Anda tidak dapat menggunakannya-exec
lagi. OK, meskipun dimungkinkan untuk menulis ulang pernyataan Anda-exec
agar dapat berfungsixargs
, pertanyaannya adalah, bagaimana dengan "skrip mini" ? (sh -c ...
) Saya tidak akan memanggil hal sepele itu untuk mengubah skrip mini 'sh -c' dengan beberapa perintah sehingga dapat bekerja denganxargs
(jika mungkin sama sekali, yaitu)printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Saya pikir Anda perlu
-n
bendera untuk mengurutkan #Menurut jenis manusia:
sunting
Print0 mungkin ada hubungannya dengan ini, saya baru saja menguji ini. Keluarkan print0, Anda bisa null menghentikan string dengan menggunakan
-z
flagsumber
print0
tampaknya memisahkan ruang dari nama file yang saya butuhkan untuk menyampaikan perintah saya, sayangnyaJika Anda telah menginstal GNU Parallel http://www.gnu.org/software/parallel/ Anda dapat melakukan ini:
Anda dapat menginstal GNU Parallel hanya dengan:
Tonton video intro untuk GNU Parallel untuk mempelajari lebih lanjut: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
sumber