Filenames

我可以在 ls 列表中截斷長文件名嗎

  • June 7, 2017

我有許多名稱很長的文件。請問,有沒有辦法使用 ls -C 並截斷文件名以獲得更多列以獲得整體視圖?

或者有沒有更好的方法來獲得一個緊湊的列表?

您可以執行以下操作:

ls | cut -c1-20 | columns -W "${COLUMNS:-80}"

列範例

(這columnss來自 GNU autogen 的)。或者:

ls | cut -c1-20 | column -c"${COLUMNS:-80}"

列範例column在 BSD 或bsdmainutilsDebian 或其衍生產品中 使用。

zsh還支持在列中列印內容,因此您可以定義如下函式:

setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"

並將其用作:

c 20 *.txt

以列列印列表 txt 文件,截斷為 20 個字元。

為了讓它更瘋狂,你可以添加:

command_not_found_handler() {(($1)) && c "$@"}

這樣,您還可以執行以下操作:

20 *

甚至:

8+8 *

zsh 例子

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