Shell

使用 ls 別名僅列出隱藏文件(不僅僅是點文件)

  • April 13, 2016

我想使用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

這將使用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

引用自:https://unix.stackexchange.com/questions/276283