I know there are some other ways to do the same thing, such as
ls -l | grep "^d"
ls -F | grep "/$"
I am just curious about the reason for adding
ls -d. Why simply using
ls -d not work? Is there any story or tricky stuff behind it?
-d flag simply instructs
ls to simply list directory entries rather than their contents. The
* given to
ls is expanded to all the entries in the current directory, both files and dirs. So
ls -d * will list all entries in this directory, without expanding the subdirectories. But if you use
*/, then bash expands this to only include the directories in this directory. But with just
ls */, all the directories will be expanded. Adding the
-d flag prevents that, and you get just the directories in this directory.
Answered By – lxop