Czy mogę obciąć długie nazwy plików na liście ls

10

Mam wiele plików o bardzo długich nazwach. Czy istnieje sposób na użycie ls -C i obcięcie nazw plików, aby uzyskać więcej kolumn dla ogólnego widoku?

Czy jest lepszy sposób na uzyskanie zwartej listy?

Harry Weston
źródło

Odpowiedzi:

9

Możesz zrobić coś takiego:

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

przykład kolumny

( columnsto sz autogenem z GNU). Lub:

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

przykład kolumny Używanie columnzgodnie z BSD lub bsdmainutilsDebianem lub jego pochodnymi.

zsh obsługuje także drukowanie rzeczy w kolumnach, dzięki czemu można zdefiniować funkcję taką jak:

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

I użyj go jako:

c 20 *.txt

Aby wydrukować listę plików tekstowych w kolumnach, obciętych do 20 znaków.

Aby było trochę bardziej szalone, możesz dodać:

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

W ten sposób możesz także:

20 *

Lub nawet:

8+8 *

przykład zsh

Stéphane Chazelas
źródło
Świetnie, dziękuję. W moim systemie Fedora 12 użyłem ls | cut -c1-20 | kolumny -W „$ {COLUMNS: -80}” i mam wszystkie moje pliki na jednym ekranie.
Harry Weston
0

Zakładając ekran z 80 kolumnami, lubię go używać

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

wprowadź opis zdjęcia tutaj

użyj ls -FCzamiast tego, aby posortować według aktualności


(Sidenote: moje lsjuż przewija się, ponieważ jest to pseudonim ls -CF --color | more -r. Nie jestem pewien, czy to najlepsza praktyka ...)

Atav32
źródło