1

I would like to use an ls alias (like l.) to output a colored list, consisting of only hidden files & directories, whether or not they begin with a dot. Any suggestions?

Example of desired results...

## Listing all contents of $PWD
$ ls -AF
file                                directory/
.dot-file                           .dot-directory/
hidden-file                         hidden-directory/

## Listing all hidden contents of $PWD, using alias `l.`
$ l.
.dot-file                           .dot-directory/
hidden-file                         hidden-directory/

Research...

I've seen answers to similar questions. These answers are awesome, but don't quite accomplish what I'm asking because:

DETAILS

## Current `ls` alias
alias ls="ls -h ${COLORFLAG}"

I use both bash & zsh.

  • 2
    This should probably be tagged "OS X" or "BSD" since "chflags" is OS X and BSD specific . – jayhendren Apr 13 '16 at 19:49
  • @jayhendren – Changed tags accordingly. Although the chflags hidden bit was just an example, I appreciate the correction. – SuitAndCape Apr 13 '16 at 21:08
1

This will use the find command to retrieve dot files and files with the "hidden" flag set.

The matching files are fed as an argument list into ls via sed (to remove the "." result as well as leading "./" prefixes) and xargs. This allows for the specification of additional ls parameters (e.g. -l).

alias l.="find . \( -flags +hidden -or -name '.*' \) -maxdepth 1 | sed 's/^\.\/*//' | xargs ls -d"

The whole construct is designed to list the current directory only (-maxdepth 1 parameter to find); if this is not desired, a conditional would need to be introduced to check for a -R option and suppress the maxdepth option to find accordingly.

Example:

$ ls -alO
total 8
drwxr-xr-x  9 guido  staff  -      306 Apr 13 22:43 .
drwxr-xr-x+ 6 guido  staff  -      204 Apr 13 19:00 ..
drwxr-xr-x  2 guido  staff  -       68 Apr 13 22:43 .hiddendir
-rw-r--r--  1 guido  staff  -        0 Apr 13 21:48 .xx
-rw-r--r--  1 guido  staff  -        0 Apr 13 21:17 file
-rw-r--r--  1 guido  staff  -       18 Apr 13 21:03 file.b
drwxr-xr-x@ 2 guido  staff  hidden  68 Apr 13 22:43 hidden2
-rw-r--r--@ 1 guido  staff  hidden   0 Apr 13 22:35 hide
drwxr-xr-x  2 guido  staff  -       68 Apr 13 21:51 tst

$ l.
.hiddendir  .xx     hidden2     hide

$ l. -alO
drwxr-xr-x  2 guido  staff  -      68 Apr 13 22:43 .hiddendir
-rw-r--r--  1 guido  staff  -       0 Apr 13 21:48 .xx
drwxr-xr-x@ 2 guido  staff  hidden 68 Apr 13 22:43 hidden2
-rw-r--r--@ 1 guido  staff  hidden  0 Apr 13 22:35 hide
  • This displayed every file & directory contained within a directory, not just the hidden files. – SuitAndCape Apr 13 '16 at 20:24
  • @SuitAndCape You're right; I've updated my answer with a different suggestion. – Guido Apr 13 '16 at 21:38
  • "+1" for nailing it. Thanks @Guido. – SuitAndCape Apr 13 '16 at 22:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.