Мені потрібно вміти в алфавітному порядку сортувати вихід, 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