Как поддерживать порядок сортировки с помощью xargs и gunzip

Если вы хотите вывести список слов, начинающихся с цифры, по одному на строку, вы можете сделать следующее:

tr -cs '[:digit:][:alpha:]' '\n' | grep '^[:digit:]'

Команда tr выводит список всех строк буквенно-цифровых символов, по одному на строку. Тогда grep нужно просматривать только цифры в начале строки.

3
21.08.2018, 06:53
1 ответ

Вы использовали параметр -print0с findи -0с xargs, но забыли использовать -zдля sort, поэтому sortпо существу видит одну строку (если ваши имена файлов не содержат\n). Вывод, который вы видите с ls, вероятно, lsвыполняет некоторую сортировку.

find /opt/minecraft/wonders/logs/ -name '20*' -type f -mtime -3 -print0 |
  sort -z | xargs -r0 gunzip -vc | grep /opt

(Примечание:20*— это глобус, и его нужно заключать в кавычки для оболочки, поэтому он передается буквально в find, вы не хотите экранировать /для grep, что это делает, не указано, нет необходимости для .*в конце регулярного выражения, если все, что вам нужно, это напечатать соответствующую строку)

7
27.01.2020, 21:12

Теги

Похожие вопросы