使用 ls 别名仅列出隐藏文件(不仅仅是点文件)

使用 ls 别名仅列出隐藏文件(不仅仅是点文件)

我想使用ls别名(如l.)输出一个彩色列表,仅包含隐藏的文件和目录,无论它们是否以点开头。有什么建议么?

期望结果的示例...

## 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/

研究...

我看过类似问题的答案。这些答案很棒,但并没有完全实现我的要求,因为:

细节

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

我同时使用bash& zsh

答案1

这将使用该find命令检索点文件和设置了“隐藏”标志的文件。

匹配的文件作为参数列表输入lsvia sed(以删除“.”结果以及前导“./”前缀)和xargs.这允许指定附加ls参数(例如-l)。

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

整个构造旨在仅列出当前目录(-maxdepth 1参数 to find);如果不希望这样做,则需要引入条件来检查-R选项并相应地抑制该maxdepth选项find

例子:

$ 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

相关内容