find . -type d
can be used to find all directories below some start point. But it returns the current directory (.) too, which may be undesired. How can it be excluded?
find . -type d
can be used to find all directories below some start point. But it returns the current directory (.) too, which may be undesired. How can it be excluded?
Not only the recursion depth of find can be controlled by the -maxdepth parameter, the depth can also be limited from “top” using the corresponding -mindepth parameter. So what one actually needs is:
find . -mindepth 1 -type d
find . ! -path . -type d
For this particular case (.), golfs better than the mindepth solution (24 vs 26 chars), although this is probably slightly harder to type because of the !.
To exclude other directories, this will golf less well and requires a variable for DRYness:
D="long_name"
find "$D" ! -path "$D" -type d
My decision tree between ! and -mindepth:
! for portability..? Throw a coin.long_name? Use -mindepth.I use find ./* <...> when I don't mind ignoring first-level dotfiles (the * glob doesn't match these by default in bash - see the 'dotglob' option in the shopt builtin: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html).
eclipse tmp # find . . ./screen ./screen/.testfile2 ./.X11-unix ./.ICE-unix ./tmux-0 ./tmux-0/default
eclipse tmp # find ./* ./screen ./screen/.testfile2 ./tmux-0 ./tmux-0/default
Well, a simple workaround as well (the solution was not working for me on windows git bash)
find * -type d
It might not be very performant, but gets the job done, and it's what we need sometimes.
[Edit] : As @AlexanderMills commented it will not show up hidden directories in the root location (eg ./.hidden), but it will show hidden subdirectories (eg. ./folder/.hiddenSub). [Tested with git bash on windows]
Pipe it to sed. Don't forget the -r that extend regular expression.
find . -type d | sed -r '/^\.$/d'