Uruchom polecenie ls
w bieżącym katalogu i uzyskaj dane wyjściowe:
$ ls
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
Chciałbym wymienić je w następujący sposób:
1. Applications
2. Desktop
3. Documents
4. Downloads
5. Library
6. Movies
7. Music
8. Pictures
9. Public
Można to osiągnąć wykorzystując less
w sposób pośredni
ls | less -N
Jak wymienić je w prosty sposób?
command-line
Rachunek różniczkowy
źródło
źródło
Odpowiedzi:
Lub po prostu wykonaj:
z
man nl
:źródło
Powinieneś przesłać dane wyjściowe
ls
do innego polecenia. Moją sugestią jest użycieawk
w ten sposób :Należy pamiętać, że plik
file\nnewline
zawiera znak nowej linii\n
w nazwie, który jest zastępowany przez opcję-b
.opcja
--group-directories-first
wyświetli katalogi przed plikami.Innym możliwym sposobem jest użycie pętli (ale w tym przypadku umieszczenie katalogów na początku listy będzie trudniejsze):
źródło
jeśli po prostu pokazuje liczbę, masz kilka opcji, jak poniżej
less -N
:Jeśli chcesz niestandardową numerację wyjściową, sugerowałbym użycie
find
i robienie wszystkiego, co chcesz wydrukować:POSIXly zrobiłbyś:
źródło
i
należy wcześniej zainicjować:i=0; find ...
-exec sh -c '....'
działa pod osobną powłoką sh.Możesz to zrobić w całości za pomocą krótkiego skryptu Bash:
Możesz nawet być fantazyjny i wpisać numer wiersza, aby uzyskać więcej niż 9 wyników:
Stosowanie
Zakładając, że zapisałeś skrypt jako plik wykonywalny
numbered-ls.sh
w bieżącym katalogu roboczym:Argument
DIRECTORY
jest opcjonalny i domyślnie przyjmuje bieżący katalog roboczy.Wyjaśnienie
Jeśli skrypt został wywołany z argumentem, zmień katalog roboczy na ścieżkę w pierwszym argumencie.
Dopasuj wszystkie wpisy bieżącego katalogu roboczego i przejrzyj je. Dla każdego wpisu zwiększ licznik i wydrukuj jego wartość wraz z nazwą wpisu. Znaki podziału linii w nazwie wpisu są zastępowane przez
^N
.Przepływaj dane wyjściowe,
cat -vt
aby uporać się z nazwami plików zawierającymi znaki niedrukowalne, które terminal może interpretować jako znaki sterujące.źródło