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

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

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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .