So zeigen Sie versteckte Dateien mit dem Linux-Befehl `find` an

19

Auf einem Linux-Server muss ich alle Dateien mit einer bestimmten Dateierweiterung im aktuellen Verzeichnis und allen Unterverzeichnissen finden.

Bisher habe ich immer den folgenden Befehl verwendet:

find . -type f | grep -i *.php

Allerdings , findet es nicht versteckte Dateien, zum Beispiel .myhiddenphpfile.php . Das Folgende findet die versteckten PHP-Dateien, aber nicht die nicht versteckten:

find . -type f | grep -i \.*.php

Wie finde ich die versteckten und nicht versteckten PHP-Dateien im selben Befehl?

Tom
quelle
1
Sie wissen, dass das "re" in "grep" für "regulären Ausdruck" steht, oder? Ich habe keine Ahnung, wie eine dieser Befehlszeilen funktionieren soll ...
Ignacio Vazquez-Abrams

Antworten:

25

...

find . -type f -name '*.php'
Ignacio Vazquez-Abrams
quelle
2

Es ist besser, iname zu verwenden (Groß- und Kleinschreibung wird nicht berücksichtigt).

Ich benutze diesen find Befehl, um versteckte Dateien zu durchsuchen:

find /path -type f -iname ".*" -ls

Auszug aus: http://www.sysadmit.com/2016/03/linux-ver-archivos-ocultos.html

NewMailpeter
quelle
0

Das Problem ist grep, nicht der Fund (versuchen Sie nur find . -type fzu sehen, was ich meine).

Wenn Sie das nicht zitieren, *wird es von der Shell erweitert - bevor grep überhaupt die Befehlszeilenargumente sieht. Da die Shell standardmäßig keine versteckten Dateien findet, treten Probleme auf.

Der Grund dafür, dass nur die versteckte Datei gefunden wird, ist, dass die Shell die bereits erweitert hat *und grep daher nur mit dieser einen Datei übereinstimmt.

Rasputnik
quelle