Antworten:
Einige Versionen von sort
haben eine -z
Option, die nullterminierte Datensätze zulässt.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Darüber hinaus können Sie auch ein übergeordnetes Skript schreiben, um dies zu tun:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Fügen Sie die -r
Option hinzu, xargs
um sicherzustellen, dass myCommand
mit einem Argument aufgerufen wird.
-t \0
Option zum Sortieren (was ein -z
Synonym ist)
|sort
Lösungen ist, dass Sie sie nicht -exec
mehr verwenden können. OK, obwohl es möglich ist, Ihre Aussage umzuschreiben, -exec
damit sie funktioniert xargs
, lautet die Frage: Was ist mit "Mini-Skripten" ? ( sh -c ...
) Ich würde das nicht als xargs
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Ich denke, Sie brauchen die -n
Flagge für Art #
Nach Mann sortieren:
-n, --numeric-sort
compare according to string numerical value
bearbeiten
Das print0 hat vielleicht etwas damit zu tun, ich habe es gerade getestet. Nehmen Sie das print0 heraus, Sie können die Zeichenfolge mit dem -z
Flag in Sort beenden
print0
scheint ein Leerzeichen zwischen den Dateinamen zu sein, was ich leider an meinen Befehl weitergeben muss
Wenn Sie GNU Parallel http://www.gnu.org/software/parallel/ installiert haben, können Sie dies tun:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Sie können GNU Parallel einfach installieren, indem Sie:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
In den Introvideos zu GNU Parallel erfahren Sie mehr: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.
unterschiedlich gehandhabt ... Wennsort
es am Ende der Liste auftaucht ... wirdpython
es nach oben sortiert. (Vielleicht mit Python sortiertLC_COLLATE=C
)