Якщо ви подивитеся на що 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
find
замістьls
?