Существует ли команда CLI для вывода в алфавитном порядке (но в одном текстовом файле или электронной таблице) списка папок, содержащихся на разных жестких дисках?
Например, предположим, что у меня такая конфигурация:
/sda/Alfa/File 1
/sdb/Bravo/File 5
/sdb/Bravo/File 20
/sdc/Delta/File 14
/sdc/Delta/File 11
Я хотел бы вывести файл TXT или электронную таблицу, в которой папки перечислены в алфавитном порядке, что-то вроде:
File 1
File 5
File 11
File 14
File 20
Могу ли я сделать это из CLI?
решение1
Попробуйте использоватьfind
сsort
:
find /sda /sdb /sdc -type f -printf '%f\n' | sort
Например:
$ tree sd[a-c]
sda
└── Alfa
└── File 1
sdb
└── Bravo
├── File 20
└── File 5
sdc
└── Delta
├── File 11
└── File 14
$ find sd[a-c] -type f -printf '%f\n' | sort
File 1
File 11
File 14
File 20
File 5
Обратите внимание, чтоэтотэто то, что обычно подразумевается под алфавитным порядком, точнее, лексикографическим порядком. ( 5
символ не предшествует 1
символу, поэтому 5
строка не может предшествовать 14
строке 05
, однако будет.)
Объяснение:
find
это программа для поиска вещей.
-type f
указывает, что нам нужны обычные файлы, а не каталоги (или другие специальные файлы).- Обычный вывод
find
— это путь к файлу, поэтому мы получимsda/Alfa/File 1
, но используя-printf '%f\n'
, мы говоримfind
вывести только имя файла.