GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo diferencia un directorio solo para archivos de un tipo específico?

También puede usar find con -exec para llamar a diff:

cd /destination/dir/1
find . -name *.xml -exec diff {} /destination/dir/2/{} \;

La falta de un complemento --incluir ... .

Podemos hacer una solución alternativa, un archivo de exclusión con todos los archivos menos los que queremos incluir. Entonces creamos file1 con encontrar todos los archivos que no tienen las extensiones que queremos incluir, sed captura el nombre del archivo y es solo:

diff --exclude-from=file1  PATH1/ PATH2/

Por ejemplo:

find  PATH1/ -type f | grep --text -vP "php$|html$" | sed 's/.*\///' | sort -u > file1 
diff PATH1/ PATH2/ -rq -X file1 

Tomado de (una versión de) la página man:

-x PAT  --exclude=PAT
  Exclude files that match PAT.

-X FILE    --exclude-from=FILE
  Exclude files that match any pattern in FILE.

Entonces parece -x solo acepta un patrón a medida que informa, pero si coloca todos los patrones que desea excluir en un archivo (presumiblemente uno por línea), podría usar la segunda bandera de esta manera:

$ diff /destination/dir/1 /destination/dir/2 -r -X exclude.pats

donde excluir.pats es:

*.jpg
*.JPG
*.xml
*.XML
*.png
*.gif

Puede especificar -x más de una vez.

diff -x '*.foo' -x '*.bar' -x '*.baz' /destination/dir/1 /destination/dir/2

De la sección Comparación de directorios de info diff (en mi sistema, tengo que hacer info -f /usr/share/info/diff.info.gz ):

Para ignorar algunos archivos al comparar directorios, use la opción '-xPATTERN' o '--exclude=PATTERN'. Esta opción ignora cualquier archivo o subdirectorio cuyos nombres base coincidan con el patrón de shell PATTERN. A diferencia del shell, un punto al comienzo de la base de un nombre de archivo coincide con un comodín al comienzo de un patrón. Debe incluir PATTERN entre comillas para que el shell no lo expanda. Por ejemplo, la opción -x '*.[ao]' ignora cualquier archivo cuyo nombre termine con '.a' o '.o'.

Esta opción se acumula si la especifica más de una vez. Por ejemplo, usando las opciones -x 'RCS' -x '*,v' ignora cualquier archivo o subdirectorio cuyo nombre base sea 'RCS' o termine con ',v'.


Linux
  1. Cómo extraer archivos Tar a un directorio específico o diferente en Linux

  2. ¿Cómo SSH en un directorio específico?

  3. ¿Cómo se eliminan archivos anteriores a la fecha específica en Linux?

  4. ¿Cómo fuerzo el grupo y los permisos para los archivos creados dentro de un directorio específico?

  5. ¿Cómo establecer permisos de archivo predeterminados para todas las carpetas/archivos en un directorio?

Cómo contar archivos en el directorio en Linux

Cómo organizar automáticamente tipos similares de archivos en carpetas específicas

Cómo tar tipos de archivos específicos (extensiones) en un directorio

Cómo contar archivos en el directorio en Linux

¿Cómo restaurar una copia de seguridad específica de archivos/directorios usando JetBackup 5?

Cómo reasignar teclas en Linux solo para un teclado específico