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
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
Odpowiedzi:
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.
-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 z xargs
, 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ć z xargs
(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:
-n, --numeric-sort
compare according to string numerical value
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
print0
wydaje się , że to oddzielające przestrzeń nazwy plików, które muszę przekazać mojemu niestety
Jeśli masz zainstalowany GNU Parallel http://www.gnu.org/software/parallel/, możesz to zrobić:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Możesz zainstalować GNU Parallel po prostu przez:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Obejrzyj wideo wprowadzające do GNU Parallel, aby dowiedzieć się więcej: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.
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
)