Jak wyświetlić listę plików tekstowych bez rozszerzenia pliku .txt?

10

Na przykład, jak mogę zreplikować:

ls *.txt

kiedy w moich plikach tekstowych brakuje .txtkońca, a jeśli chodzi o rozszerzenia, pojawiają się tak samo jak wiele innych typów plików?

Alternatywnie, czy jest możliwe wyszczególnienie tylko tych plików, które NIE mają rozszerzenia pliku?

użytkownik82212
źródło

Odpowiedzi:

8

Aby dopasować pliki, które w ogóle nie mają rozszerzenia, możesz użyć polecenia

ls | grep -v '\.'

Aby dopasować pliki, które nie mają .txtrozszerzenia, możesz użyć polecenia

ls | grep -v '\.txt'

Spowoduje to przekazanie listy plików w bieżącym katalogu do grep, co usunie wszystkie nazwy plików, które zawierają .(lub .txtdla drugiego polecenia) w nich.

wierzę
źródło
Dziękuję Ci! To odpowiedziało na moje pytanie. Ponadto, czy można używać tego samego narzędzia grep z innymi poleceniami? Na przykład z todos? (do konwersji zakończeń linii)
user82212,
1
Tak, grepmożna go używać z dowolnym poleceniem. |Symbol jest używany do przekazywania wyników z jednej komendy do drugiej, i grepbędzie pasował do linii, które mają (lub nie masz) określony tekst. Ale jeśli chcesz zmodyfikować tekst (oprócz drukowania tylko pasujących wierszy), powinieneś rzucić okiem na sedpolecenie.
iBelieve
Aby znaleźć tylko pliki tekstowe (z wyłączeniem katalogów i plików binarnych), użyj:ls --classify | grep -v '/'.'*'
chaskes
6

Dzięki ls -ignore="PATTERN"niemu możesz wykluczyć pliki z wyniku ls.

Na przykład, ls --ignore="*.txt"aby zignorować pliki txt.

Vivas84
źródło
3

Po prostu zaneguj wzór (uwaga: shopt -s extglobjest wymagana).

Aby wyświetlić wszystkie pliki bez rozszerzenia:

ls !(*.*)

Aby wyświetlić txtpliki inne niż pliki, spróbuj:

ls !(*.txt)
kenorb
źródło
0

Polecenie ls -SX1|lesszostanie posortowane według rozszerzenia w jednej kolumnie, a pliki bez niego zostaną przeniesione na górę. Przeciąganie przez mniej, jak w przykładzie, jest zalecane dla katalogów zawierających więcej niż kilka plików, aby ograniczyć wyjście do pełnego ekranu na raz.

Starszy Geek
źródło
0

Wolę unikać używania grep do prostych operacji listowania.

Aby uniknąć używania grep,

Polecam za pomocą ls !(*.*)do wyszukiwania plików bez rozszerzenia pliku i

ls -I "*.gz" -I "*.tz" lub ls --ignore={"*.jpg","*.png","*.bmp"}

aby wykluczyć określone rozszerzenia plików

computingfreak
źródło