Список всех папок и подпапок
В 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++ и т. д.