GNU/Linux >> Tutoriales Linux >  >> Linux

¿Excluir directorio en Buscar?

¿Cómo puedo encontrar todos los archivos y directorios que coincidan con un patrón, excluyendo un directorio usando find? ?

Digamos que tengo la siguiente estructura de archivos;

.
  foo-exclude-me/
    foo.txt
  foo-exclude-me-not/
    foo.txt
  bar/
    foo.txt
    foobar/
      bar.txt
      foofoo.txt

¿Cómo obtendría el siguiente resultado usando find? :

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt

He intentado usar los dos comandos siguientes:

find . -name 'foo-exclude-me' -prune -o -name 'foo*'
find . -name 'foo*' ! -path './foo-exclude-me/*'

pero ambos devuelven esto:

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me # << this should be excluded
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt

¿Cómo puedo excluir adecuadamente el foo-exclude-me? directorio?

Respuesta aceptada:

find . -name 'foo-exclude-me' -prune -o -name 'foo*' -print

Sin -print , la acción predeterminada implícita se aplica a todas las coincidencias, incluso a las eliminadas. El -print explícito se aplica solo bajo las condiciones especificadas, que son -name 'foo*' solo en la rama else de -name 'foo-exclude-me' .

En términos generales, use un -print explícito siempre que esté haciendo algo más complejo que una conjunción de predicados.

¡Tu segundo intento con ! -path './foo-exclude-me/*' no funcionó porque ./foo-exclude-me no coincide con ./foo-exclude-me/* (sin / final ). ¡Añadiendo ! -path ./foo-exclude-me funcionaría.


Linux
  1. ¿Encontrar archivos duplicados?

  2. ¿Buscar directorio de exclusión?

  3. ¿Copiar los primeros N archivos en un directorio diferente?

  4. Cómo excluir un directorio en find. dominio

  5. ¿Cómo encontrar el directorio hdfs de Hadoop en mi sistema?

Cómo contar archivos en el directorio en Linux

Cómo excluir un directorio al buscar archivos en Linux

Eliminar archivos y directorios por sus nombres. ¿El fichero o directorio no existe?

¿Archivos Cat con directorio?

El comando find Directory de Linux:Explicación

¿Excluir archivos ocultos al buscar con Unix/Linux find?