2011-01-02 9 views
5

Mit einem Shell-Befehl i alle Dateien auf meinem Server im folgende Verzeichnis Muster zur Liste Nötige zu finden:Shell-Befehl Dateien in einem Verzeichnis Muster

/home/*/public_html/images/*.php

Theres einige eine seiner dauert sehr lange dies manuell zu tun. Ich habe wirklich keine Ahnung, wenn es um diese Befehle geht.

+1

Ja. Das ist die korrekte Syntax. Funktioniert es nicht? Oder willst du es schneller machen? Wenn ja, ist keine inhärente Optimierung möglich. Nur Alternativen und Problemumgehungen. 'locate | grep' ist eine Suche nach zwischengespeicherten Verzeichnislisten. – mario

Antwort

11

Shell Script:

find /home/*/public_html/images -iname "*php" -exec echo {} \; 

Anschließend können Sie das ändern -exec-Befehl, um die gewünschten Aktionen für die zurückgegebenen Dateien auszuführen. In diesem Fall wiederholen wir sie, aber Sie könnten auch andere Aktionen ausführen.

+0

Dies entspricht '/ home/foo/public_html/images/file.php', aber nicht'/home/foo/bar/public_html/images/file.php'. Kann ich Verzeichnisse in jeder Tiefe vergleichen? –

-2

Verwenden der PHP glob Funktion

glob('/home/*/public_html/images/*.php') 

Es wird eine Anordnung von zusammenpassenden Pfad Strings zurück. Sie können auch einfach nutzen:

ls /home/*/public_html/images/*.php 

oder:

for i in /tmp/*/public_html/images/*.php; 
do 
some_command "$i" 
done 

aus der Schale.

+0

Ich glaube, er macht das in der Shell, nicht php. – marcog

+0

@marcog, es ist mit PHP getaggt. Aber es ist nicht wirklich wichtig. –

+0

Der PHP-Tag könnte kommen gerade aus der Tatsache, dass er Dateien Auflistung .php. – marcog

5

Let bash die Dateien für Sie erweitern und ls sie zur Liste verwenden:

ls /home/*/public_html/images/*.php 

Beispiel Ausgabe:

/home/grant/public_html/images/bar.php 
/home/grant/public_html/images/foo.php 
/home/marcog/public_html/images/helloworld.php 
11
find /path/to/directory/. -path "*/match/this/path/*" -type f -name "*.php" 
+0

Danke, das ist was ich brauchte. Es findet Dateien in '/ path/to/directory/foo/Spiel/diese/path' und'/path/to/directory/foo/bar/Spiel/das/path/baz/' –

Verwandte Themen