Shell
使用 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/
研究…
我看過類似問題的答案。這些答案很棒,但並沒有完全完成我的要求,因為:
- 他們只顯示隱藏的點文件
- 如果我跑了
chflags hidden file
,那麼file
將被排除在l.
輸出之外- 它們僅限於以
grep
樣式顯示隱藏的點文件,而不是ls
樣式
- 這很重要,因為我可能想
-l
在那里扔一面旗幟細節
## Current `ls` alias alias ls="ls -h ${COLORFLAG}"
我同時使用
bash
&zsh
。
這將使用
find
命令來檢索點文件和設置了“隱藏”標誌的文件。匹配的文件作為參數列表輸入
ls
viased
(以刪除“.”結果以及前導“./”前綴)和xargs
. 這允許指定附加ls
參數(例如-l
)。alias l.="find . \( -flags +hidden -or -name '.*' \) -maxdepth 1 | sed 's/^\.\/*//' | xargs ls -d"
整個構造旨在僅列出目前目錄(
-maxdepth 1
參數 tofind
);如果不希望這樣做,則需要引入條件來檢查-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