Chcę wyświetlić 8. nazwę pliku w katalogu, używając ls -l i potok na przykład ls -l | wc -1 dałoby mi liczbę, ale to, co chcę zwrócić, to 8. nazwa pliku na liście katalogów, cokolwiek to jest. patrzyłem na grep i symbole wieloznaczne, ale wciąż nie widzę, które polecenie dałoby mi wynik, którego szukam.
Dzięki
Odpowiedzi:
próbować
jeśli chcesz tylko nazwę, której możesz użyć
cut
na końcutr
polega na zamianie mnożenia spacji i tabulatorów na jedną spacjęźródło
tr -s ' ' | cut
lewę, z jakiegoś powodu nigdy o tym nie myślałem - zwykle używam (g) awk podczas wydobywania kolumn.ls -l
jak wskazano, jeśli chcesz tylko nazwę pliku, ale nawet nie potrzebujeszls -1
; po prostuls
zrobię (patrz superuser.com/q/424246/49184 ).-f9
jest tu potrzebny (jak również wspomniano w odpowiedzi Cokedude'a), ale jak powiedziałem, nazwy plików ze spacjami będą niepoprawne.-f9-
zwróci pola 9 i kolejne i będzie lepszy, ale z drugiej strony nazwy plików z wieloma spacjami w sekwencji nadal będą niepoprawne.Inny sposób jest taki.
ls -l | sed -n '9p'
Jeśli chcesz tylko nazwę pliku lub katalogu, użyj tego.
ls -l | sed -n '9p' | awk '{print $9}'
jcubic, jesteś pewien, że tego właśnie chciałeś?
ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f8
Myślę, że chciałby taką nazwę pliku lub katalogu.
ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f9
źródło
ls -l
, aby uzyskać wyjście 1-kolumny, a nawetls -1
jeśli rzuca wyjście do rury (patrz np Czym jest magia separator pomiędzy nazwami plików w wyjścia ls? ).NR==8
zwróci true tylko dla wiersza 8, a następnieawk
domyślnym działaniem jest wydrukowanie go.źródło
Po prostu nie używaj
-l
Dostajesz nazwę pliku,
ls
zamawia pliki tak samo jakls -l
.źródło