Powiedzmy, że istnieją pliki o nazwach:
batman.c
debate.c
cricketbat.c
Jakiego polecenia i jak go użyć, aby wyświetlić listę wszystkich tych plików za pomocą tagu wyszukiwania bat
?
command-line
files
search
find
srk_cb
źródło
źródło
Odpowiedzi:
Znajdowanie plików w
bat
dowolnym miejscuAby znaleźć wszystkie pliki w dowolnym miejscu,
/path/to/folder
których nazwy zawierająbat
, możesz użyć:Mam cytowany wzór wyszukiwarki
*bat*
, ponieważ jeśli cytaty zostały pominięte, a pliki są*bat*
w bieżącym katalogu, powłoka wzrośnie*bat*
do listy nich i przekazać , że dofind
. Wtedyfind
nie działałoby dobrze. (\*bat\*
a"*bat*"
także praca.)Aby wyszukać w folderze, w którym aktualnie się znajdujesz (np. W którym
cd
edytujesz), użyj.
, jak zwykle:Aby przeszukać cały komputer, użyj
/
. Aby przeszukać katalog domowy, użyj~
lub pełną nazwę swojego katalogu domowego. ( Powłoka rozwija się~
do pełnej ścieżki katalogu domowego).Poszerzanie lub zawężenie wyszukiwania według nazwy
Jeśli chcesz wyszukiwać bez rozróżniania wielkości liter, aby dopasować pliki zawierające
BAT
,bAt
itd., Użyj-iname
testu zamiast-name
testu:Zauważyłem, że wszystkie twoje pliki kończą się
.c
. Jeśli chcesz tylko znaleźć takie pliki, użyj:Zauważyłem, że wszystkie twoje nazwy plików mają
bat
albo na samym początku, albo na końcu części poprzedzającej.c
przyrostek. Jeśli chcesz uniknąć pasujących plikówembattled.c
, możesz użyć:-o
jest operatorem lub .Pasujące tylko pliki
Aby znaleźć tylko zwykłe pliki - a nie foldery, dowiązania symboliczne i specjalne węzły urządzeń - możesz użyć
-type f
. Jest to często zalecane i czasami całkiem odpowiednie ... ale często nie to, czego naprawdę chcesz , szczególnie jeśli biegaszfind
w celu samodzielnego sprawdzenia wyników. Gdybyś miał link symboliczny pasujący do twojego wyszukiwania, czy nie chciałbyś o tym wiedzieć?Jeśli chcesz znaleźć zarówno zwykłe pliki, jak i dowiązania symboliczne, możesz użyć:
To używa
-o
operatora, a także nawiasów do grupowania (które muszą być cytowane, aby powłoka nie traktowała ich specjalnie; w przeciwnym razie pojawi się błąd składniowy).Załóżmy jednak, że chcesz zobaczyć tylko dowiązania symboliczne, które ostatecznie wskazują na zwykły plik (a nie dowiązania symboliczne do katalogów, węzłów urządzeń itp.). To jest nawet jeszcze prostsze: użyj
-xtype
zamiast-type
. Pod warunkiem, że nie korzystaszfind
z-L
flagi,-xtype
w dowiązaniu symbolicznym testowany jest typ pliku, do którego prowadzi łącze.Jeśli masz dowiązanie symboliczne do innego dowiązania symbolicznego do pliku,
-xtype f
dopasuje je, mimo że jego bezpośrednim celem jest inne dowiązanie symboliczne, a nie zwykły plik. To jest prawie zawsze to, czego chcesz.Często ludzie myślą, że chcą
-type f
, ale tak naprawdę chcą-xtype f
.Uzyskiwanie szczegółowych danych wyjściowych
find
domyślną akcją, jeśli jej nie określisz, jest-print
. Wszystkie podane powyżej polecenia są sobie równoważne z-print
tackami na końcu.find
jest często używany do uruchamiania poleceń na podstawie znalezionych plików - często poleceń, które wprowadzają zmiany. Ale są też inne działania, których celem jest wyświetlanie wyników-print
. Szczególnie interesujące jest-ls
:Daje to szczegółowe informacje o każdym pliku, w formacie wielokolumnowym, podobnym do (choć nie do końca takiego samego), jak to, co zobaczysz po uruchomieniu .
ls file
Dalsza lektura
Aby uzyskać więcej informacji o
find
innych sposobach wyszukiwania plików, zobacz:find
podręcznika , dostępna online lub uruchamianaman find
w terminalu.find
,locate
orazxargs
użyteczności publicznej.źródło
-xtype
rada; być możels *bat*
i-maxdepth
/mindepth
są również warte wspomnienia.ls
już, że koncentruje się na rekurencyjnym przypadku zfind
tutaj. Oczywiście przydatna byłaby również szczegółowa odpowiedź obejmująca brak (lub mniej) rekurencyjną listę nazw plików pasujących do jakiegoś wzorca (ls
i zafind
pomocą-maxdepth
). Możesz opublikować taką odpowiedź!Najłatwiej jest uruchomić
W ten sposób możesz przeszukiwać cały komputer w poszukiwaniu plików zawierających „bat” w nazwie pliku
Aby odświeżyć listę plików na komputerze, uruchom
Uruchom to polecenie, gdy ostatnio dodałeś nowe pliki do swojego konta
źródło
updatetdb
updatedb
był uruchamiany ręcznie lub automatycznie),sudo updatedb
najpierw trzeba je uruchomić, tak.bat
.find /
podczaslocate
wyszukiwania w bazie danych, podczas gdyfind
rekurencyjnie wyświetla listę,/
a następnie dopasowuje wyrażenie regularne.Otwórz terminal i zmień katalogi na katalog, z którego chcesz rozpocząć wyszukiwanie, a następnie uruchom następującą komendę:
.
Uruchamia polecenie Znajdź z bieżącego katalogu. Dopasowuje ciąg i jest wielkość liter. ( Nie uwzględnia wielkości liter) Do wyszukiwania tylko dla plików.-name
bat
-iname
-type f
źródło
Jeśli pliki znajdują się w bieżącym katalogu, użyj:
Lub (aby mieć je wiersz po wierszu):
Jeśli chcesz przeszukać system w poszukiwaniu tych plików, użyj:
źródło
Chcesz użyć
find
polecenia z-iname
opcją dopasowania nazwy pliku bez rozróżniania wielkości liter lub-name
opcją dopasowania nazwy pliku z rozróżnianiem wielkości liter . Oba pozwalają na użycie nazw symboli wieloznacznych. Aby znaleźć dowolne nazwy plików zawierające „nietoperz”, należy użyć:Lub
W
*
oznacza „dowolny znak (s)”, więc poszukiwanie poszukujebat
wszelkich znaków, w tym żaden, przed lub po nim. Do/
wyszukiwania z katalogu rekursywnie, można użyć.
która będzie wyszukiwać rekursywnie z bieżącego katalogu lub bezwzględną ścieżkę gdzie chcesz szukać od. Zobacz, jak szukać plików przy użyciu wyrażenia regularnego w skrypcie powłoki Linuxźródło
-type f
, co nie tylko wyklucza katalogi i często nie jest tym, czego użytkownicy naprawdę chcą .Użyj starego dobrego
find
.na przykład.:
z
man find
:źródło