Necesito excluir .git
de mi find
búsqueda. Para lograr eso, estoy usando -path ./.git -prune
cambiar:
$ find . -path ./.git -prune -o ( -type f -o -type l -o -type d ) | grep '.git'
./.git
Sin embargo, aunque esto omite el contenido del directorio .git, enumera el directorio en sí. Funciona cuando agrego -path ./.git -prune -o -print -a
find . -path ./.git -prune -o -print -a ( -type f -o -type l -o -type d ) | grep '.git'
¿Por qué es esto necesario? Pensé que ambos comandos deberían tener el mismo resultado. La segunda sintaxis es bastante fea.
Respuesta aceptada:
El man
página para find
da:
-prune True; if the file is a directory, do not descend into it. If
-depth is given, false; no effect. Because -delete implies
-depth, you cannot usefully use -prune and -delete together.
Así que en el primer ejemplo no es así que -path ./.git -prune
es falso y, por lo tanto, la acción predeterminada (-print
) no se llamará, por lo tanto, la línea se imprime.