Jawaban:
Beberapa versi sortmemiliki -zopsi, 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 -ropsi untuk xargsmemastikan bahwa myCommanditu dipanggil dengan argumen.
-t \0opsi untuk sort (yang merupakan -zsinonim)
|sortsolusi ini adalah Anda tidak dapat menggunakannya -execlagi. OK, meskipun dimungkinkan untuk menulis ulang pernyataan Anda -execagar dapat berfungsi xargs, 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 dengan xargs(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 -nbendera untuk mengurutkan #
Menurut jenis manusia:
-n, --numeric-sort
compare according to string numerical value
sunting
Print0 mungkin ada hubungannya dengan ini, saya baru saja menguji ini. Keluarkan print0, Anda bisa null menghentikan string dengan menggunakan -zflag
print0tampaknya memisahkan ruang dari nama file yang saya butuhkan untuk menyampaikan perintah saya, sayangnya
Jika Anda telah menginstal GNU Parallel http://www.gnu.org/software/parallel/ Anda dapat melakukan ini:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Anda dapat menginstal GNU Parallel hanya dengan:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Tonton video intro untuk GNU Parallel untuk mempelajari lebih lanjut: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.berbeda ... Dengansortitu berakhir di akhir daftar ... denganpythonitu agak ke atas. (mungkin python macam denganLC_COLLATE=C)