Linux-Suchordner in Unterordnern

19

Ich versuche, ein Verzeichnis zu finden, das 480debugerrorunter untergeordneten Verzeichnissen verschachtelt ist. Ich kenne den genauen Pfad nicht, oder auch wenn ich die genaue Schreibweise des Verzeichnisses habe, das ich finden möchte.

Gibt es einen Linux-Befehl, um Verzeichnisse mit einem bestimmten Präfix oder Suffix zu finden, zum Beispiel Verzeichnisse mit dem Namen "debug" oder "debug error", mit einem unbekannten Präfix oder Suffix?

Bharanikumar
quelle
2
Sie können versuchen locate(findet Dateien) oder find(findet Dateien).
Miku
find -type f -name * ummy ... aber nicht bekommen
3
Du brauchst -type d . fsucht nach Dateien
thkala

Antworten:

16

find ist was Sie brauchen:

$ find -type d -name '*debugerror*'

oder

$ find -type d -name '480debugerror'

wenn Sie sich über den Ordnernamen sicher sind.

Thkala
quelle
8
find . -type d \( -iname '*error*' -o -iname '*debug*' \) 
Zsolt Botykai
quelle
1
locate -i "480debugerror"

überprüft eine Datenbank, in der alle auf Ihrem PC indizierten Dateien aufgelistet sind. Ich habe oft solche Szenarien und suche daher wie folgt:

locate -i "debug" | grep -i "log"

Damit werden alle Dateien gefunden, die in ihrem Pfad enthalten sind (unabhängig von Groß- und Kleinschreibung [das bedeutet -i] | grep).

Der Vorteil der Verwendung von locate over find besteht darin, dass locate eine viel schnellere Ausgabe erzeugt (da nur eine Datenbank überprüft wird). Wenn die Datei / der Ordner jedoch nicht indiziert ist, wird nichts gefunden. (um die Datenbank zu aktualisieren, die Sie verwenden können sudo updatedb)

jcuenod
quelle
Nur wenn Sie slocateinstalliert haben. Einige Produktionsumgebung nicht :-(
Zsolt Botykai
Stimmt, aber wenn eine Option, würde ich sagen, es ist besser zu finden ...
1

In Bash,

shopt -s nullglob globstar
echo **/*480*/
echo **/*debug*/
echo **/*error*/

sucht rekursiv nach Verzeichnissen mit Namen, die 480, Debug oder Fehler enthalten.

user2394284
quelle