Мені потрібно вміти в алфавітному порядку сортувати вихід, findперш ніж передати його команді. Вхід | sort |між ними не спрацював, і що я можу зробити?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Мені потрібно вміти в алфавітному порядку сортувати вихід, findперш ніж передати його команді. Вхід | sort |між ними не спрацював, і що я можу зробити?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Відповіді:
Деякі версії програми sortмають -zопцію, яка дозволяє проводити записи з недійсним завершенням.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Крім того, ви також можете написати сценарій високого рівня для цього:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Додайте -rпараметр, щоб xargsпереконатися, що myCommandвикликається аргументом.
-t \0варіант для сортування (що є -zсинонімом)
|sortрішень полягає в тому, що ви більше не можете користуватися -exec. Гаразд, хоча можна переписати подане вами твердження -execтак, щоб воно працювало xargs, питання в тому, що з "міні-скриптами" ? ( sh -c ...) Я б не закликав цю дрібницю перетворити міні-скрипт 'sh -c' з декількома командами, щоб він міг працювати xargs(якщо це можливо взагалі)
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Я думаю, вам потрібен -nпрапор для сортування №
Відповідно до роду людини:
-n, --numeric-sort
compare according to string numerical value
редагувати
У print0 може бути щось спільне з цим, я лише перевірив це. Вийміть print0, ви можете скасувати рядок у сортуванні за допомогою -zпрапора
print0мабуть, розділяє прозвища, які розділяють простір, і це те, що мені потрібно передати своїй команді, на жаль,
Якщо у вас встановлений GNU Parallel http://www.gnu.org/software/parallel/, ви можете це зробити:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Ви можете встановити GNU Parallel просто:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Перегляньте вступні відео для GNU Parallel, щоб дізнатися більше: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.різному обробляють ... Зsortцим він закінчується в кінці списку ... зpythonним сортується до початку. (можливо,LC_COLLATE=C