2011-07-22 6 views
17

Soy nuevo para golpear a los scripts. Solo intento hacer un script que busque en un directorio y repita los nombres de todos los subdirectorios.de bash directorios hallazgo

La base para el código es el siguiente script (lo llaman isitadirectory.sh):

 #!/bin/bash 

    if test -d $1 
     then 
       echo "$1" 
    fi 

por lo que en la línea de comandos si escribo

 $bash isitadirectory.sh somefilename 

Se hará eco somefilename, si es un directorio.

Pero quiero buscar a través de todos los archivos en el directorio padre.

lo tanto, estoy tratando de encontrar una manera de hacer algo como

  ls -l|isitadirectory.sh 

Pero, por supuesto, el comando anterior no funciona. ¿Alguien puede explicar un buen guión para hacer esto?

+0

primer lugar se puede ejecutar una secuencia de comandos si forexecution permiso no se concedió 'chmod + x isitadirectory.sh'. Luego ejecutas el script con './Isitadirectory.sh'. – Lynch

Respuesta

5

siguientes líneas le puede dar una idea ... lo que está pidiendo

 
#!/bin/bash 

for FILE in `ls -l` 
do 
    if test -d $FILE 
    then 
     echo "$FILE is a subdirectory..." 
    fi 
done 

Es posible que tenga una mirada en bash 'para' bucle.

+2

'ls -l' no funcionará. También considere usar * en lugar de analizar ls output ([Por qué no debe analizar el resultado de ls] (http://mywiki.wooledge.org/ParsingLs)). – Lynch

6

tratan de utilizar

find $path -type d?

para el directorio actual

find . -type d

44
find . -mindepth 1 -maxdepth 1 -type d 
0

usted tiene que utilizar:

ls -lR | isitadirectory.sh 

(parámetro -R es la recursividad)

3

Aquí ya es mucho soluciones, por lo que sólo por diversión:

file ./**/* | grep directory | sed 's/:.*//' 
23

En el caso particular que busca una) guía 1, que se conoce el) Nombre 2, ¿por qué no tratar con esto:

find . -name "octave" -type d 
Cuestiones relacionadas