Сортування файлів у пошуковій системі терміналів


1

Чи можна в командному рядку мати той самий порядок сортування файлів / папок, як Finder. Якщо я біжу find . -type d, Я отримую як вихідний:

./Folder 1
./Folder 10
./Folder 11
./Folder 2
./Folder 3
...

я намагався find -s . -type d, а також додали деякі sort опції. Нещастить.

Я хочу:

./Folder 1
./Folder 2
./Folder 3
...
./Folder 10
./Folder 11

2
Чи існує конкретна причина, чому ви користуєтеся find замість ls?
nohillside

Відповіді:


2

Якщо ви подивитеся на що find говорить про сортування:

 -s   Cause find to traverse the file hierarchies in 
lexicographical order, i.e., alphabetical order within each directory.  
Note: `find -s` and `find | sort` may give different results.

Це означає, що нам потрібно його провести sort щоб ми могли трохи маніпулювати ним.

Як ви вже бачили, простий алфавітно-цифровий тип не працюватиме, тому що він порівнює все як символ ANSI не як числа. Що потрібно зробити, це просто порівняти цифри. Ми можемо зробити це за допомогою -k варіант sort

find . -type d | sort -k2.3

Що за sort -k2.3 команда виконує сортування на другому полі (відмежованому пропуском), що закінчується на 3-й позиції. Це результат використання угоди про іменування папок 1 :

.
./Folder 1
./Folder 2
./Folder 3
./Folder 4
./Folder 5
./Folder 6
./Folder 7
./Folder 8
./Folder 9
./Folder 10
./Folder 11
./Folder 12
./Folder 13
./Folder 14
./Folder 15

1 Щоб створити цю структуру папок, я скористався командою в папці домашньої теки:

mkdir test; cd test; for n in {1..15}; do mkdir "Folder $n"; done

Дякую, я не знав -k опції. Однак це не відповідало моїм вимогам. я зробив це невелика програма пітона вирішити цю проблему.
doekman

0

Можна також зробити

ls -v

який сортує файли за номерами версій в іменах за природним порядком.

Від man ls

-v     natural sort of (version) numbers within text

1
macOS не поставляється з встановленою GNU ls.
fd0

GNU ls можна встановити через Homebrew.
nohillside
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.