So finden Sie alle Dateinamen mit der angegebenen Erweiterung

8

Ich muss alle .pemDateien auf meinem System finden. Würde das Folgende das tun?

sudo find / -type f -name *.pem

Wenn nicht, wie würde ich einen Suchbefehl schreiben, um jede Datei dieser Art zu finden?

David542
quelle

Antworten:

18

Sie sind auf dem richtigen Weg - Sie müssen nur das Muster zitieren, damit es von findund nicht von Ihrer Shell interpretiert wird :

sudo find / -type f -name '*.pem'
mgorven
quelle
Du warst schneller als ich. :)
EEAA
2
/ Ich holster die Pistolen ;-)
mgorven
3

Die Verwendung find /ist normalerweise sehr langsam. Die Verwendung locateist viel schneller, aber etwas ungenau, da sie nichts Komplexeres als den Teilstring-Abgleich unterstützt. Ein aufgerufenes Verzeichnis .pembrokewird gefunden und von find zusammen mit jeder darin enthaltenen Datei zurückgegeben.

Eine Kombination von locateund grephat jedoch Geschwindigkeit und Präzision. Praktischerweise erfordert es auch nicht sudo.

locate .pem | grep "\.pem$"

Der Nachteil? Die verwendete Datenbank locatewird normalerweise nur einmal pro Tag aktualisiert, sodass die letzten Änderungen (Ergänzungen, Löschungen, Namensänderungen usw.) nicht gefunden werden.

Ladadadada
quelle
Lokalisieren ist viel schneller als Finden
B14D3
1

Fast!

sudo find / -type f -name \*.pem

oder

sudo find / -type f -name "*.pem"

Andernfalls interpretiert die Shell das * anstelle von find.

Schwindler
quelle
\ * hängt ein bisschen von der Shell und dem Geschmack von Unix ab. (Funktioniert jedoch auf den meisten Systemen wie vorgesehen.) Die angegebene Version funktioniert meines Wissens immer.
Tonny
Das ist lustig. Musste \\ * schreiben, um der Flucht zu entkommen. In diesem Fall sehr passend.
Tonny
1

... oder wenn mlocate auf Ihrem Computer ausgeführt wird und Sie nicht die aktuellsten Daten benötigen, verwenden Sie den Befehl find

Suchen Sie * .pam

Es ist schneller, weil es Dateien in einer zuvor erstellten Datenbank findet. nicht auf dem ganzen System.

stderr
quelle
0
sudo find / | grep .pam

Denke, das sollte funktionieren.

William Fleming
quelle