Могу ли я обрезать длинные имена файлов в списке ls

10

У меня есть несколько файлов с очень длинными именами. Пожалуйста, есть ли способ использовать ls -C и обрезать имена файлов, чтобы получить больше столбцов для общего вида?

Или есть лучший способ получить компактный список?

Гарри Уэстон
источник

Ответы:

9

Вы могли бы сделать что-то вроде:

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

пример столбцов

(это columnsс sGNU 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

Чтобы распечатать список текстовых файлов в столбцах, усекается до 20 символов.

И чтобы сделать его немного безумнее, вы можете добавить:

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

Таким образом, вы также можете сделать:

20 *

Или даже:

8+8 *

Zsh пример

Стефан Шазелас
источник
Блестяще, спасибо. В моей системе Fedora 12 я использовал ls | вырезать -c1-20 | колонки -W "$ {COLUMNS: -80}", и получил все мои файлы на одном экране.
Гарри Уэстон
0

Предполагая 80-колоночный экран, мне нравится использовать

ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more

введите описание изображения здесь

используйте ls -FCвместо того, чтобы сортировать по актуальности


(Sidenote: мои lsуже свитки, потому что на них есть псевдоним ls -CF --color | more -r. Не уверен, что это лучшая практика ...)

Atav32
источник