Список всех папок и подпапок

В Linux я хочу узнать все имя папки / подпапки и перенаправить в текстовый файл

Я попытался ls -alR > list.txt, но он дает все файлы + папки

3 ответа

Решение

Ты можешь использовать find

find . -type d > output.txt

или же tree

tree -d > output.txt

tree, Если не установлен в вашей системе.

sudo apt-get install tree
find . -type d > list.txt

Перечислит все каталоги и подкаталоги по текущему пути. Если вы хотите перечислить все каталоги по пути, отличному от текущего, измените . на этот другой путь.

Если вы хотите исключить определенные каталоги, вы можете отфильтровать их с отрицательным условием:

find . -type d ! -name "~snapshot" > list.txt

Так же как find перечисленные в других ответах, лучшие оболочки позволяют как рекурсивные глобусы, так и фильтрацию глобальных совпадений, поэтому в zsh например...

ls -lad **/*(/)

... выводит список всех каталогов, сохраняя все необходимые данные "-l", которые в противном случае вам нужно было бы воссоздать, используя что-то вроде...

find . -type d -exec ls -ld {} \;

(не так просто, как предлагают другие ответы)

Преимущество find в том, что он более независим от оболочки - более переносим даже для system() вызовы из программы на C/C++ и т. д.

Другие вопросы по тегам