Как в Linux получить список файлов с полным путем, со всеми поддиректориями
Получение списка файлов через команду ls
В ls
предусмотрены опция вывода полного пути к файлу и опция рекурсивного обхода поддиректорий. Но толку от них нет никакого: получить простой список файлов с полным путем и со всех подкаталогов все равно не удасться.
Наиболее правильное решение такой задачки является составным. Для получения списка файлов нужно всего лишь преобразовать выхлоп утилиты ls через редактор командной строки awk. Вот готовая команда:
ls -R $PWD | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'
Получение списка файлов через команду find
Для получения списка файлов мы можем использовать не специально созданную для этого команду ls
, а команду поиска файлов find
.
find $PWD -type f
Добавляй команду sort
и получай упорядоченность
find $PWD -type f | sort
data/aaafile.bin
data/bbbfile.bin
data/cccdir/dddfile.bin
data/eeefile.bin
data/ffffile.bin
Cписок-то все равно неоднородный. В этом списке все так же файлы из одной директории перемешаны с файлами из поддиректорий. Если нам нужен правильный отсортированный список, лучше воспользоваться командой ls
описанной выше.