GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Alle Dateien finden, deren Name eine Zeichenfolge enthält

Der -maxdepth Option sollte vor -name stehen Option, wie unten.,

find . -maxdepth 1 -name "string" -print

Verwenden Sie find :

find . -maxdepth 1 -name "*string*" -print

Es findet alle Dateien im aktuellen Verzeichnis (löschen Sie maxdepth 1 wenn Sie es rekursiv wollen) mit "String" und wird es auf dem Bildschirm ausgeben.

Wenn Sie vermeiden möchten, dass eine Datei „:“ enthält, können Sie Folgendes eingeben:

find . -maxdepth 1 -name "*string*" ! -name "*:*" -print

Wenn Sie grep verwenden möchten (aber ich denke, es ist nicht notwendig, da Sie den Dateiinhalt nicht überprüfen möchten) Sie können verwenden:

ls | grep touch

Aber, ich wiederhole, find ist eine bessere und sauberere Lösung für Ihre Aufgabe.


Verwenden Sie grep wie folgt:

grep -R "touch" .

-R bedeutet Rückfall. Wenn Sie lieber nicht in die Unterverzeichnisse gehen möchten, überspringen Sie es.

-i bedeutet "Groß-/Kleinschreibung ignorieren". Vielleicht finden Sie das auch einen Versuch wert.


find $HOME -name "hello.c" -print

Dadurch wird der gesamte $HOME durchsucht (z.B. /home/username/ ) System für alle Dateien mit dem Namen „hello.c“ und zeigt ihre Pfadnamen an:

/Users/user/Downloads/hello.c
/Users/user/hello.c

Es wird jedoch nicht mit HELLO.C übereinstimmen oder HellO.C . Um die Groß-/Kleinschreibung zu berücksichtigen, übergeben Sie -iname Option wie folgt:

find $HOME -iname "hello.c" -print

Beispielausgaben:

/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c

Übergeben Sie die -type f Option, nur nach Dateien zu suchen:

find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print

Die -iname funktioniert entweder mit dem GNU- oder BSD-Befehl (einschließlich OS X) Version find. Wenn Ihre Version des Find-Befehls -iname nicht unterstützt , versuchen Sie die folgende Syntax mit grep Befehl:

find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"

ODER versuchen Sie es

find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print

Beispielausgaben:

/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c

Linux
  1. Anzahl der Dateien, die eine bestimmte Zeichenfolge enthalten?

  2. Alle Dateien außer in einem bestimmten Unterverzeichnis löschen mit Suchen?

  3. So finden Sie rekursiv alle Dateien mit einer Dateigröße von Null (0) Bytes in einem Verzeichnis

  4. Wie finde ich alle Dateien mit einem bestimmten übergeordneten Verzeichnis in Linux?

  5. Alle Grafikdateien mit find auflisten?

Linux-Suchbefehl mit praktischen Beispielen

Finden Sie verlorene Dateien mit Scalpel

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

Dateien mit gesetzten ACLs finden

Verzeichnisse mit allen Dateien finden, die älter als X sind?

So entfernen Sie alle Dateien, die mit einer bestimmten Zeichenfolge in Linux beginnen