Если вы хотите вывести список слов, начинающихся с цифры, по одному на строку, вы можете сделать следующее:
tr -cs '[:digit:][:alpha:]' '\n' | grep '^[:digit:]'
Команда tr
выводит список всех строк буквенно-цифровых символов, по одному на строку. Тогда grep нужно просматривать только цифры в начале строки.
Вы использовали параметр -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
, что это делает, не указано, нет необходимости для .*
в конце регулярного выражения, если все, что вам нужно, это напечатать соответствующую строку)