Any Reason for Using "*/" in Command "Ls -D */" to List Directories?
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...
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?
2 Answers
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.
If you use ls -d *, then you will see not just directories, but also files. If you use ls -d */, you will only see directories.