Yanıtlar:
Bazı sürümlerde boş sonlandırılmış kayıtlara izin veren sort
bir -z
seçenek vardır.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Ayrıca, bunu yapmak için üst düzey bir komut dosyası da yazabilirsiniz:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Argümanla çağrıldığından emin olmak için -r
seçeneği ekleyin .xargs
myCommand
-t \0
sıralama seçeneği de vardır ( -z
eşanlamlı olan)
|sort
çözümlerle ilgili sorun, -exec
artık kullanamamanızdır . Tamam, sizin ifadeniz verilen yeniden yazmak mümkün olsa -exec
da çalışır, böylece xargs
söz vardır, neyi "mini komut" hakkında ? ( sh -c ...
) Ben bir 'sh -c' mini senaryoyu dönüştürmek için bu önemsiz demezdim birden o ile çalışmak, böylece komutları xargs
(yani eğer mümkünse)
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Bence -n
sıralama için bayrağa ihtiyacın var.
Adama göre:
-n, --numeric-sort
compare according to string numerical value
Düzenle
Print0'in bununla bir ilgisi olabilir, sadece bunu test ettim. Print0 çıkarıp, kullandığınız çeşit dize sonlandırmak can null -z
bayrağı
print0
benim emrime geçmek için ihtiyacım olan dosya adlarını boşlukla ayırıyor gibi görünüyor, ne yazık ki
Eğer GNU Parallel http://www.gnu.org/software/parallel/ kurulu ise bunu yapabilirsiniz:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
GNU Parallel'ı basitçe aşağıdaki şekilde kurabilirsiniz:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Daha fazla bilgi için GNU Parallel için tanıtım videolarını izleyin: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.
farklısort
işler ... Listenin sonundapython
solar ... onunla en üste çıkar. (belki python sıralarLC_COLLATE=C
)