2011-01-02 25 views
5

Con un comando shell i necesidad de enumerar todos los archivos de mi servidor en el directorio siguiente patrón:comando Shell para buscar archivos en un patrón directorio

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

theres unos pocos un su tomando mucho tiempo para hacer esto manualmente. Realmente no tengo idea cuando se trata de estos comandos.

+1

Sí. Esa es la sintaxis correcta. ¿No funciona? ¿O quieres hacerlo más rápido? Si es así, no hay optimización inherente posible. Solo alternativas y soluciones. 'locate | grep' es uno para buscar listados de directorios en caché. – mario

Respuesta

11

Shell Guión:

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

A continuación, puede cambiar la -exec comando para hacer las acciones que desee a los archivos devueltos. En este caso, hacemos eco de ellos, pero también podría realizar otras acciones fácilmente.

+0

Esto coincidirá con '/ home/foo/public_html/images/file.php' pero no con'/home/foo/bar/public_html/images/file.php'. ¿De alguna manera podría hacer coincidir directorios en cualquier profundidad? –

-2

uso del PHP glob función

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

Será devolver una matriz de las cadenas de ruta correspondiente. También se puede simplemente usar:

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

o:

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

de la cáscara.

+0

Creo que está haciendo esto en el shell, no en php. – marcog

+0

@marcog, está etiquetado PHP. Pero en realidad no importa. –

+0

La etiqueta PHP podría provenir simplemente del hecho de que está enlistando archivos .php. – marcog

5

Let fiesta de expandir los archivos para usted y utilizar ls enumerarlos:

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

Ejemplo de salida:

/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

Gracias, esto es lo que necesitaba. Encuentra archivos en '/ path/to/directory/foo/match/this/path' y'/path/to/directory/foo/bar/match/this/path/baz/' –

Cuestiones relacionadas