Possible Duplicate:
How can I use inverse or negative wildcards when pattern matching in a unix/linux shell?Lista wszystkich plików, które nie pasują do wyboru (za pomocą ls)
Czytałem stronę man
dla ls
, i nie mogę znaleźć opcji, aby wyświetlić wszystkie tamto nie pasuje do selektora plików . Czy wiesz, jak wykonać tę operację?
Na przykład: powiedzmy mój katalog jest taka:
> ls
a.txt b.mkv c.txt d.mp3 e.flv
Teraz chciałbym zrobić coś, co robi następujących
> ls -[SOME_OPTION] *.txt
b.mkv d.mp3 e.flv
Czy istnieje taka możliwość?
Jeśli nie, czy istnieje sposób, aby potokować wyjście ls
do innej funkcji (prawdopodobnie sed
), która pokazuje tylko te, które chciałbym?
Nie wiem dokładnie, jak to zrobić, ale ja sobie wyobrazić, że będzie coś takiego:
> ls | sed [SOMETHING]
naprawdę powinien nauczyć się korzystać sed
, awk
i grep
, ale zachować utknięcie w zrozumieniu, jak pisać wyrażenia. Rozumiem wyraźnie pojęcie wyrażeń regularnych, ale mylę się z wyrażeniami regularnymi, które używają innej składni.
Każda pomoc będzie bardzo ceniona!
EDIT:
Zapomniałam wspomnieć, że jestem z systemem Mac OS X, a więc funkcje mogą się nieznacznie różnić od tych opisanych w innych odpowiedzi na/Linux powłoce UNIX (stąd niektóre z moich pomyłki z sed
, awk
i grep
).
To ładnie działa z wieloma różnymi selektorami jako parametrem 'path' Dziękuję! Jedną z rzeczy, którą znalazłem, było to, że mogłem zrobić 'find. -maxdepth 1! -path" * txt "' too. Co teraz powinienem użyć, gdybym miał Regex do filtrowania listy? –
if chcesz użyć Regex, użyj grep, np. masz 3 pliki takie jak "abc", użyj ls | grep -v "[a | b]", wtedy wyświetli c. a następnie jeśli masz 3 pliki aa aaa, użyj "ls | grep -v "a +", a następnie wyświetli tylko "a". –
./ Argument jest opcjonalny, ponieważ polecenie find już rozpoczyna wyszukiwanie w dół od bieżącego drzewa katalogów – kante