Jak sprawić, by ls wyświetlał tylko pliki?


24

Myślę, że musi istnieć sposób, aby ls wyświetlał tylko nie-katalogi, ale strona podręcznika nie czyni tego oczywistym


Nie jestem pewien ls, ale łatwo można zrobić z filepoleceniem: file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck,

1
Innym sposobem byłoby filtrowanie wyjścia lsprzez grepcoś w rodzaju ls -1F /directory/containing/the/files | grep -vE /$. Należy jednak pamiętać, że analizowanie wyniku ls może być trudne .
Henning Kockerbeck,

Odpowiedzi:


37
ls -p | grep -v /

Korzystanie ls -pnakazuje lsdołączyć ukośnik do wpisów, które są katalogiem i używając grep -v /mówi grepwrócić tylko linie nie zawierające ukośnik.


Sprawdziłem tę, ponieważ jest to moja ulubiona odpowiedź (podczas gdy ja głosowałem za nimi wszystkimi), ale teraz próbuję znaleźć sposób na umieszczenie jej w kolumnach i odwrócenie kolejności danych wyjściowych ...
thinksinbinary

„Możesz użyć 1 przełącznika do listy pojedynczych kolumn” przepraszam, próbowałem dowiedzieć się, co masz na myśli, doceniłbym i przykład / wyjaśnienie, jeśli tak, wiem tylko, co to jest przełącznik w odniesieniu do programowania w języku C
thinksinbinary

@sdkks Nie potrzebujesz 1przełącznika podczas przesyłania danych wyjściowych, ponieważ w tej sytuacji domyślnie będzie to jedna kolumna. Jeśli o to ci chodziło.
thomasrutter

@ thinksinbinary nie wiem, jak zrobić to wielokolumnowy, ale możesz wyszukać lub zadać własne pytanie, a ktoś będzie wiedział.
thomasrutter

7

Możesz spróbować:

find . -maxdepth 1 -not -type d

I zamapuj to na specjalny alias.

Ale jeśli naprawdę chcesz używać lspolecenia, tutaj:

ls -p | egrep -v /$


6

Alternatywnie:

ls -lAh | grep -v '^d'

Ta metoda wymienia w

  • -l Format długiej listy
  • -A Wyświetla prawie wszystkie (pokaż ukryte pliki, ale nie pokazuj .i ..)
  • -h Rozmiary plików czytelne dla człowieka

podczas grep

  • -v Nie pokazuj pasujących rekordów
  • Regular expressionfiltr ^d- te zaczynają się na literę d (dla katalogu), tjdrwxrwxr-x <some file details> <foldername>

Jeśli nie chcesz za każdym razem pisać, możesz zrobić z niego alias swojego profilu bash / shell.


2

Widziałem w twoim (@thinksinbinary) komentarzu do odpowiedzi @thomasrutter, że chciałbyś mieć możliwość wydrukowania ich w odwrotnej kolejności i w kolumnach. Prawdopodobnie już to wymyśliłeś lub przeprowadziłeś się, ale oto:

ls -pr | grep -v / | column
  • -p dodaje ukośnik do przodu ('/') do nazw katalogów
  • -r odwraca kolejność danych wyjściowych
  • -v pozwala grepowi wykonać odwrotne wyszukiwanie, aby wydrukować wszystko oprócz katalogów ( wszystko, co nie zawiera „/”, które tam -p )
  • kolumna umieszcza ją w kolumnach” - Captain Obvious

1
myślę, że to fajnie, że na forum ubuntu ludzie nadal komentują i czytają twoje posty po długim czasie. Chciałem wrócić do Linuksa, aby nauczyć się montażu i systemów operacyjnych, ponieważ robienie tego w systemie Windows jest znacznie trudniejsze. Dzięki!
myśli binarnie

0
ls -F | grep -v /

Powyższe polecenie wyświetla pliki, ale zawiera dowiązania symboliczne, potoki itp. Jeśli chcesz je również wyeliminować, możesz użyć jednej z wymienionych poniżej flag.

ls -Fdołącza symbole do nazw plików. Te symbole pokazują przydatne informacje o plikach.

ls -F | grep -Ev '/|@|*|=|>|\|'

Powyższe polecenie wyświetla tylko pliki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.