То, что мы делаем, является монтированием дом сервера на/mnt/server/export/home, затем на другой символьной ссылке машин корневой каталог каждого пользователя в локальный / домой. Это может сохраняться полуавтоматически через машины с rsync.
Использовать find
как обычно, и разграничьте свои строки с NUL. GNU sort
может обработать их с переключателем-z:
find . -print0 | sort -z | xargs -r0 yourcommand
Некоторые версии sort
имейте a -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
назван с аргументом.
.
по-другому... С sort
это заканчивается в конце списка... с python
это сортирует к вершине. (возможно, виды Python с LC_COLLATE=C
)
– Peter.O
16.03.2012, 16:45
|sort
решения состоят в том, что Вы не можете использовать -exec
больше. Хорошо, хотя возможно переписать Ваш оператор, данный -exec
так, чтобы это работало с xargs
, вопрос, что относительно "мини-сценариев"? (sh -c ...
) Я не назвал бы это тривиальным для преобразования 'sh-c' мини-сценарий с несколькими командами так, чтобы он мог работать с xargs
(если это возможно, вообще, который является)
– syntaxerror
20.11.2015, 21:57
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
– Roger Pate
24.08.2016, 21:11
Я думаю, что Вам нужно -n
флаг для sort#
Согласно виду человека:
-n, --numeric-sort
compare according to string numerical value
править
print0 может иметь некоторое отношение к этому, я просто протестировал это. Выньте print0, можно аннулировать оконечный строка в виде с помощью -z
флаг
print0
кажется, разделение пространства имена файлов, который является тем, что я должен передать своей команде, к сожалению
– Industrial
16.03.2012, 12:46
Если у Вас есть Параллель GNU, http://www.gnu.org/software/parallel/ установил Вас, может сделать это:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Можно установить Параллель GNU просто:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Посмотрите вводные видео для Параллели GNU для узнавания больше: https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1
Некоторые реализации find
поддерживают упорядоченный обход напрямую через параметр -s
:
$ find -s. -name '*.json'
Во FreeBSD найдите справочную страницу:
-s Cause find to traverse the file hierarchies in lexicographical
order, i.e., alphabetical order within each directory. Note:
`find -s' and `find | sort' may give different results.