
Ниже я привел команду 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