Muszę być w stanie posortować alfabetycznie wynik find
przed przesłaniem go do polecenia. Wchodzenie | sort |
pomiędzy nie działało, więc co mogłem zrobić?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Używaj find
jak zwykle i ogranicz swoje linie za pomocą NUL. GNU sort
może obsłużyć je za pomocą przełącznika -z:
find . -print0 | sort -z | xargs -r0 yourcommand
Niektóre wersje sort
mają -z
opcję, która pozwala na rekordy zakończone zerem.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Dodatkowo możesz również napisać skrypt wysokiego poziomu, aby to zrobić:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Dodaj -r
opcję, aby xargs
upewnić się, że myCommand
jest wywoływana z argumentem.
.
inaczej ... Zsort
tym kończy się na końcu listy ... zpython
tym kończy się na górze. (może python sortuje zLC_COLLATE=C
)-t \0
opcja sortowania (która jest-z
synonimem)|sort
rozwiązaniami polega na tym, że nie można już używać-exec
. OK, chociaż możliwe jest, aby przepisać oświadczenie uwagę na-exec
to, że działa zxargs
, pytanie brzmi, co o „mini-skryptów” ? (sh -c ...
) Nie nazwałbym tego tak trywialnym przekształceniem mini-skryptu „sh-c” z wieloma poleceniami, aby mógł on pracować zxargs
(jeśli to w ogóle możliwe)printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Myślę, że potrzebujesz
-n
flagi do sortowania #Według rodzaju człowieka:
edytować
Print0 może mieć z tym coś wspólnego, właśnie to przetestowałem. Wyjmij print0, możesz zerować sortowanie łańcucha za pomocą
-z
flagiźródło
print0
wydaje się , że to oddzielające przestrzeń nazwy plików, które muszę przekazać mojemu niestetyJeśli masz zainstalowany GNU Parallel http://www.gnu.org/software/parallel/, możesz to zrobić:
Możesz zainstalować GNU Parallel po prostu przez:
Obejrzyj wideo wprowadzające do GNU Parallel, aby dowiedzieć się więcej: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
źródło