У меня есть несколько файлов с очень длинными именами. Пожалуйста, есть ли способ использовать ls -C и обрезать имена файлов, чтобы получить больше столбцов для общего вида?
Или есть лучший способ получить компактный список?
У меня есть несколько файлов с очень длинными именами. Пожалуйста, есть ли способ использовать ls -C и обрезать имена файлов, чтобы получить больше столбцов для общего вида?
Или есть лучший способ получить компактный список?
Ответы:
Вы могли бы сделать что-то вроде:
ls | cut -c1-20 | columns -W "${COLUMNS:-80}"
(это columns
с s
GNU Autogen). Или:
ls | cut -c1-20 | column -c"${COLUMNS:-80}"
Используется column
как в BSD или в bsdmainutils
Debian или его производных.
zsh
также есть поддержка для печати вещей в столбцах, так что вы можете определить функцию как:
setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"
И использовать его как:
c 20 *.txt
Чтобы распечатать список текстовых файлов в столбцах, усекается до 20 символов.
И чтобы сделать его немного безумнее, вы можете добавить:
command_not_found_handler() {(($1)) && c "$@"}
Таким образом, вы также можете сделать:
20 *
Или даже:
8+8 *
Предполагая 80-колоночный экран, мне нравится использовать
ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more
используйте ls -FC
вместо того, чтобы сортировать по актуальности
(Sidenote: мои ls
уже свитки, потому что на них есть псевдоним ls -CF --color | more -r
. Не уверен, что это лучшая практика ...)