Używając ls -l z potokiem, w jaki sposób mogę sprawić, aby wyświetlał ósmy plik na liście bez szczegółów pliku

0

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

Erich
źródło
Przeczytaj: mywiki.wooledge.org/ParsingLs
mveroone

Odpowiedzi:

4

próbować

ls -l | head -n 9 | tail -n 1

jeśli chcesz tylko nazwę, której możesz użyć cutna końcu

ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f8

tr polega na zamianie mnożenia spacji i tabulatorów na jedną spację

jcubic
źródło
+1 za tr -s ' ' | cutlewę, z jakiegoś powodu nigdy o tym nie myślałem - zwykle używam (g) awk podczas wydobywania kolumn.
Rich Homolka
1
Jeśli nazwa pliku zawiera wiele spacji po kolei, zwrócony plik będzie niepoprawny. I jeśli o to chodzi, nawet jeśli nazwa pliku zawiera tylko jedną spację, nie zostanie zwrócona w całości, ponieważ zwracane jest tylko pole 8, czyli nazwa pliku aż do pierwszej spacji . Ponadto nie potrzebujesz, ls -ljak wskazano, jeśli chcesz tylko nazwę pliku, ale nawet nie potrzebujesz ls -1; po prostu lszrobię (patrz superuser.com/q/424246/49184 ).
Daniel Andersson,
1
Daje to również niepoprawne dane wyjściowe w moim systemie, ponieważ zależy to od lcoale formatu daty. -f9jest 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.
Daniel Andersson
2

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

Cokedude
źródło
0

Po prostu nie używaj -l

ls | głowa -8 | ogon -1

Dostajesz nazwę pliku, lszamawia pliki tak samo jak ls -l.

Paweł Wiśniewski
źródło