# Linux – List all directories and subdirectories, excluding directories without files

command linedirectory-listinglinuxlsunix

I would like to list all the directories and sub directories in and below the current path. Since I only wanted to display directories I came up with the following command:

find -type d -exec ls -d1 {} \; | cut -c 3-


This prints out for example

webphone
music
finance
finance/banking
finance/realestate
finance/other
finance/moneylending
finance/insurance
webtv


The problem I have right now is, that the directory finance is listed. finance contains no files, just the sub directories you see above. What I want to achieve is the following output:

webphone
music
finance/banking
finance/realestate
finance/other
finance/moneylending
finance/insurance

In this list the directory finance is not listed. Therefore I need your advice of how to filter directories which contain no files (only subdirectories).
find . -type f | sed 's!/[^/]*$!!' | sort -u  If you want to strip the leading ./: find . -type f | sed -e 's!/[^/]*$!!' -e 's!^\./!!' | sort -u