Поиск файла в папке по шаблону номера

Поиск файла в папке по шаблону номера

Ниже я привел команду find для поиска и вывода списка всех файлов в папке. Файлы перечислены в алфавитном порядке, но я хочу вывести список всех файлов по номеру. Когда я использовал «-number» вместо «-name», это не сработало.

find . -type f -name '*'
I100001093
I200001093
I300001093
XB00001093
I100001094
I200001094
I300001094
XB00001094
I100001095
I200001095
I300001095
XB00001095

может ли кто-нибудь подсказать мне правильную команду для перечисления в числовом порядке.

решение1

В зависимости от того, как вы хотите обрабатывать те Iи Xдругие части, вы можете просто использовать команду sortвроде:

find . -type f | sort -n

Если это не тот порядок сортировки, который вам нужен, вам придется предоставить нам более подробную информацию (и в идеале показать нам желаемый результат вашего примера).

Учитывая, что вы хотите сгруппировать начало имен вместе, мы можем указать ключевое поле для сортировки. Поскольку вывод от find начнется с ./{id}двух следующих символов (по-видимому), связанных в пакете вместе, мы можем начать сортировку с 5-го символа в строке, указав ключ сортировки:

find . -type f | sort -n -k 1.5

-kдля сортировки позволяет указать ключ, по которому будет выполняться сортировка, здесь мы сортируем по первому полю, но начинаем с 5-го символа, а затем используем -nдля числовой сортировки

Если вам нужен только текущий каталог, вы можете использовать -maxdepthследующее:

find . -maxdepth 1 -type f | sort -n -k 1.5

если вы хотите, чтобы он был портативным:

find . -path '*/*/*' -prune -o -type f | sort -n -k 1.5

Связанный контент