Utilizo la siguiente línea para encontrar todos los subdirectorios del PWD y ejecuto svnadmin verifyen cada directorio (ya sé que son repositorios de Subversion)
find ./* -maxdepth 0 -exec svnadmin verify {} \;
Esto funciona bien, aparte del hecho de que la salida se ve así:
* Verifying repository metadata ...
* Verifying metadata at revision 1 ...
* Verifying metadata at revision 2 ...
* Verifying metadata at revision 4 ...
* Verifying metadata at revision 5 ...
* Verifying metadata at revision 6 ...
* Verifying metadata at revision 9 ...
* Verifying metadata at revision 10 ...
* Verifying metadata at revision 12 ...
* Verifying metadata at revision 14 ...
* Verifying metadata at revision 15 ...
* Verifying metadata at revision 18 ...
* Verifying metadata at revision 20 ...
* Verifying metadata at revision 22 ...
* Verified revision 0.
* Verified revision 1.
* Verified revision 2.
* Verified revision 3.
* Verified revision 4.
* Verified revision 5.
* Verified revision 6.
* Verified revision 7.
* Verified revision 8.
* Verified revision 9.
* Verified revision 10.
* Verified revision 11.
* Verified revision 12.
* Verified revision 13.
* Verified revision 14.
* Verified revision 15.
* Verified revision 16.
* Verified revision 17.
* Verified revision 18.
* Verified revision 19.
* Verified revision 20.
* Verified revision 21.
* Verified revision 22.
* Verified revision 23.
* Verified revision 0.
* Verifying repository metadata ...
* Verifying metadata at revision 4 ...
* Verifying metadata at revision 5 ...
* Verifying metadata at revision 6 ...
* Verifying metadata at revision 7 ...
* Verifying metadata at revision 9 ...
* Verified revision 0.
* Verified revision 1.
* Verified revision 2.
* Verified revision 3.
* Verified revision 4.
* Verified revision 5.
* Verified revision 6.
* Verified revision 7.
* Verified revision 8.
* Verified revision 9.
Realmente me gustaría findimprimir el nombre del archivo antes de ejecutar el svnadmin verifycomando, para facilitar el registro.
Traté de apretar un poco lsallí, pero lo armé, ¿cómo debo hacer esto (preferiblemente simplemente)?
command-line
bash
scripts
find
Arronico
fuente
fuente

'%p'a'%p\n'para que el nombre preceda al resultado de verificación en su propia línea.-printf '%p\n'con el más simple-printfind -name <a_name> -print -exec command {} \;Si no desea recurrir, no tiene sentido usarlo
find. Es mucho más simple hacerlo directamente en el shell:La
for d in */encontrará todos los directorios (las*/que asegura que sólo los directorios y archivos no se encuentran); elecho "$d"imprimirá el nombre del directorio; Elsvnadmin verify "$d"comprobará el directorio.Esto se puede ejecutar directamente desde la línea de comandos o desde un script sin cambio de formato.
fuente
find. ¡Gracias por mejorar mi conocimiento!dotglobyglobstaren bash, lo que crea un guión ya más complicado. Tiendo a guardar globos para tareas grandes y complicadas, mientras quefindla sintaxis es más fácil de unir sobre la marcha con solo unir un montón de filtros y comandos en una sola línea.findsimple. Siempre prefiero los globs,findya que no solo los encuentro mucho más simples, sino que también son más seguros cuando se trata de nombres de archivos arbitrarios que se pasan a otros programas.He agregado
-type dsi solo se trata de directorios.fuente
{}, al menos ensvnadmin verify {}-execgenera un shell hijo, en el que se ejecutan los 2 comandos,;como el final de la línea?Prueba esto:
Si solo quieres directorios (Gracias a @kos note):
fuente
for f in */procesará solo directorios. -maxdepth 1lugar de./*, solo necesita el primer nivel en la estructura de carpetas-type d, solo necesitas carpetas! -name ".", no necesitas.-execpara iniciar un shellsh -cpara iniciar comandos dentro del shellSu comando
o más corto
-prunesi el archivo es un directorio, no descienda a élSu comando
fuente
-pruneparece interesante. Solía./* -maxdepth 0evitar regresar.del comando find. No causa ningún error crítico, pero prefiero no tener eso en mi salida.findtiene banderas de opciones para imprimir, que ya se mencionan en otras respuestas. Si observamos el problema desde la perspectiva de ejecutar múltiples comandos para el mismo archivo procesado actualmente,findpermite usar múltiples-execdeclaraciones. Esto significa que podríamos optar por usar:Una vez más, nota que este enfoque es aplicable no sólo a la impresión con
echo,printfu otros servicios públicos, sino también a otros comandos.fuente
Puede ser útil canalizar la
findsalida alreadbucle:Le permite ejecutar una secuencia de comandos compuesta más complicada con nombres de archivo devueltos por
find, como en este elegantelsejemplo:fuente
Esto imprimirá el nombre y el contenido de los archivos solo de forma recursiva.
fuente