Muszę być w stanie posortować alfabetycznie wynik findprzed 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 findprzed 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 sortmają -zopcję, 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 -ropcję, aby xargsupewnić się, że myCommandjest wywoływana z argumentem.
-t \0opcja sortowania (która jest -zsynonimem)
|sortrozwiązaniami polega na tym, że nie można już używać -exec. OK, chociaż możliwe jest, aby przepisać oświadczenie uwagę na -execto, ż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 -nflagi 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ą -zflagi
print0wydaje 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 ... Zsorttym kończy się na końcu listy ... zpythontym kończy się na górze. (może python sortuje zLC_COLLATE=C)