2014-07-09 10 views
30

Idealnie, chciałbym być w stanie korzystać z programu jakJak znaleźć plik/katalog, który może znajdować się w dowolnym miejscu wiersza poleceń systemu Linux?

find [file or directory name] 

zgłosić ścieżki z pasującymi nazwami plików/katalogów. Niestety wygląda na to, że sprawdza tylko bieżący katalog, a nie cały folder.

Próbowałem również zlokalizować i które, ale żaden znaleźć plik, mimo że znam go na komputerze gdzieś.

+0

Nie jestem pewien, co problem jest, jak 'find -name„nazwa_pliku”' znajdzie pliki rekursywnie w bieżącym katalogu roboczym. – foips

+0

Przepraszamy, jeśli nie jest jasne, plik może nie znajdować się w bieżącym katalogu roboczym. Może być w dowolnym miejscu na komputerze. – johncorser

Odpowiedz

38

"Niestety wygląda na to, że sprawdzany jest tylko bieżący katalog, a nie cały folder". Prawdopodobnie masz na myśli, że nie wygląda w podkatalogach. Aby rozwiązać ten problem, należy użyć find -name "filename"

Jeśli dany plik nie znajduje się w bieżącym katalogu roboczym można przeszukiwać całą maszynę poprzez

find/-name "filename" 

ta współpracuje również z rzeczy jak find/-name "*.pdf" itp Czasami lubię do rury, która w oświadczeniu grep, jak również (ponieważ na moim komputerze co najmniej, zwraca uwagę na wyniki), więc skończyć z czymś takim

find/-name "*star*wars*" | grep star 

Robi ten lub podobny sposób po prostu pomaga mi błyskawicznie odnaleźć filename i reco gnize, jeśli w rzeczywistości jest to plik, którego szukam.

+0

Dzięki. Czy z ciekawości działa to w przypadku częściowych nazw plików? – johncorser

+2

Tak, pod warunkiem, że używasz gwiazdki. Zwróć uwagę, że wielkość liter ma znaczenie. Jeśli mam plik o nazwie STARTUP, chcę znaleźć, 'find/-name" * ART * "' znajdzie go.Zauważ, że 'find/-name '* art *" 'NIE zlokalizuje tego pliku, ponieważ" art "jest małymi literami, podczas gdy" STARTUP "jest dużymi literami –

+1

@johncorser, powinieneś również móc użyć jakiegoś RE, aby znaleźć czego potrzebujesz –

4

Jeśli trzeba znaleźć zagnieżdżone w niektórych katalogów:

find/-type f -wholename "*dirname/filename" 

lub podłączone katalogi:

find/-type d -wholename "*foo/bar" 
2

Komenda find potrwa długo czas, najszybszy sposób, aby wyszukać plik jest za pomocą polecenia locate , który szuka nazw plików (i ścieżek) w indeksowanej bazie danych (zaktualizowanej komendą updatedb).

Wynik pojawi się natychmiast z prostym poleceniem:

locate {file-name-or-path} 

Jeśli polecenie nie zostanie znaleziony, należy zainstalować pakiet mlocate i uruchomić polecenie updatedb najpierw przygotować bazę wyszukiwarki po raz pierwszy.

Więcej szczegółów tutaj: http://itblog.study.land/the-fastest-way-to-find-files-by-filename-mlocate-locate-and-updatedb-commands-2/

0

Poniżej przykład pomoże znaleźć konkretny folder w bieżącym katalogu. Ten przykład wyszukać tylko prąd stały i będzie ona szukać sub katalogu dostępnego w bieżącym katalogu

#!/bin/bash 

result=$(ls -d operational) 

echo $result 

test="operational" 

if [ "$result" == "$test" ] 
then 
    echo "TRUE" 
else 
    echo "FALSE" 
fi 
Powiązane problemy