2010-12-28 17:42:34 +0000 2010-12-28 17:42:34 +0000
133
133

Jak znaleźć plik według nazwy pliku w terminalu Mac OSX?

Chcę znaleźć plik na moim Macbooku o nazwie: abc.dmg. Próbowałem użyć reflektora, ale on go nie znajduje. Kiedy próbowałem znaleźć, i użyłem: find -name abc.dmg -path /, wróciły mi błędy.

Jaka jest właściwa składnia do znalezienia pliku po nazwie pliku z komendą find w terminalu Mac OSX?

Odpowiedzi (7)

182
182
182
2010-12-28 17:45:50 +0000

W najprostszej formie, find przyjmuje jeden parametr: ścieżkę. W najprostszej formie, find przyjmuje jeden parametr: ścieżka.

  • / (program)
  • -name abc.dmg (ścieżka), oraz
  • &007 (kryteria).
find / -name abc.dmg
26
26
26
2016-10-27 14:11:10 +0000

find . -name '*.csv' na przykład pracował dla mnie z żbikami. OP mógł również użyć find . -name '*.dmg' do sprawdzenia swojego aktualnego katalogu, zakładając, że był w /.

10
10
10
2010-12-28 19:21:39 +0000

Polecenie mdfind wykorzystuje bazę danych Spotlight http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html

6
6
6
2010-12-28 17:44:14 +0000

Możesz użyć polecenia locate.

locate abc.dmg
3
3
3
2010-12-28 22:53:12 +0000

Najprostszym sposobem (którego jestem pewien, że już próbowałeś, ale hej, i tak dodam go do wątku) jest wpisanie abc.dmg w pole wyszukiwania w prawym górnym rogu każdego okna wyszukiwarki, a następnie wybranie “File Name” z opcji na pasku wyszukiwania, który się pojawi.

Nie ma potrzeby korzystania z terminala.

Należy również pamiętać, że Spotlight indeksuje tylko katalogi określone w panelu sterowania Spotlight i abc. dmg może nie znajdować się w żadnym z tych katalogów.

Popraw mnie, jeśli się mylę, ale myślę, że polecenie find musi wiedzieć, co wypisać:

find / -name abc.dmg -print

…powinno wypisać wszelkie wyniki do terminala (łącznie z błędami uprawnień).

Jeśli nie chcesz błędów uprawnień i chcesz przeszukać inne katalogi użytkowników to:

sudo find / -name abc.dmg -print
2
2
2
2018-02-09 04:28:07 +0000

W celu szybkiego odnalezienia i otwarcia odpowiedniego pliku można skorzystać z poniższych funkcji wiersza poleceń. Jest to łatwiejsze niż wpisanie długiego ciągu zapytań w oknie reflektora.

Dodaj następujące funkcje w ~/.bash_aliases.

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

Teraz, albo source ~/.bash_aliases albo otwórz nowe funkcje ładowania terminala. Aby wyszukać pliki ze słowami, ciasto i 2016 w dowolnym miejscu nazwy pliku, wykonaj

spot pie*2016 #or
spot 2016*pie

Nie ma potrzeby dodawania * do zapytania jako wzoru wyszukiwania, '*$1*' oznacza już wpisanie dzikiej karty na początku i na końcu zapytania. Dodatkowe cd jest dla przypadków niewrażliwych i ignorujących znaki diakrytyczne, np. fred zwróci oba, Frédéric i FrEDeric.

findpaper ograniczy wyszukiwanie do wyników pod określoną ścieżką (rekurencyjną), podczas gdy openpaper pie*201 otworzy (lub pierwszy z wielu wyników) wynik wyszukiwania lub openpaper pie*201 3 otworzy trzeci wpis wyniku. Aby uniknąć otwierania skryptów bash lub innych nie-dokumentalnych plików, możesz ograniczyć zawartość pliku poprzez dodatkowe atrybuty wyszukiwania. Informacje na temat używania innych operatorów wyszukiwania można znaleźć w sekcjach Składnia wyrażenia wyrażenia metadanych plików oraz https://ss64.com/osx/mdfind.html .

0
0
0
2019-06-09 11:50:48 +0000

Przechwytuj listę wszystkich plików na dysku jako root z /

sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt

Kataloguj cały plik przez grep, aby przeszukać cały dysk:

cat ~/file-list.txt | grep abc.dmg

Użyj wyrażeń regularnych, aby wyświetlić tylko pliki .jpg i .dmg:

cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"

Wynik:

Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg

…etc. Niestety uchwycą również wszystkie zamontowane dyski, więc najlepiej będzie wyrzucić te, które mają dużo linków do Time Machine. Tak więc w innym oknie uruchamiam watch tail -n 10 ~/file-list.txt, który pokazuje mi, gdzie to jest w moim dastardly hack!