GNU/Linux >> Tutoriales Linux >  >> Linux

Buscar:¿Cortar no ignora la ruta especificada?

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.


Linux
  1. error:src refspec main no coincide con ningún [GIT]

  2. Comando no encontrado en Bash arreglado

  3. ¿Por qué Sudo ignora los alias?

  4. ¿Por qué Find no acepta '-exec Cp {} Dir +'?

  5. ¿Vsftpd no muestra el contenido de un directorio?

¿Cómo hacer que tree -a ignore los directorios .git?

Los comandos personalizados de Git de PATH no funcionan

¿Por qué esta expresión regular no funciona en Linux?

Averigüe si la biblioteca está en la ruta

La repetición automática no funciona

¿Por qué find -mtime no funciona como se esperaba en archivos con diferentes zonas horarias?