Issue
I know there are some other ways to do the same thing, such as
ls -l | grep "^d"
or
ls -F | grep "/$"
I am just curious about the reason for adding */
after ls -d
. Why simply using ls -d
not work? Is there any story or tricky stuff behind it?
Solution
Adding the -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 Answer Checked By - Katrina (WPSolving Volunteer)