GNU/Linux >> Tutoriels Linux >  >> Linux

Comment différencier un répertoire uniquement pour les fichiers d'un type spécifique ?

Vous pouvez également utiliser find avec -exec pour appeler diff :

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

L'absence d'un --include complémentaire ... .

Nous pouvons faire une solution de contournement, un fichier d'exclusion avec tous les fichiers mais ce que nous voulons inclure. Nous créons donc file1 avec une recherche de tous les fichiers qui n'ont pas d'extensions que nous voulons inclure, sed attrapez le nom du fichier et c'est juste :

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

Par exemple :

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

Tiré de (une version de) la page de manuel :

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

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

Il ressemble donc à -x n'accepte qu'un seul modèle lorsque vous le signalez, mais si vous mettez tous les modèles que vous souhaitez exclure dans un fichier (vraisemblablement un par ligne), vous pouvez utiliser le deuxième indicateur comme suit :

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

où exclude.pats est :

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

Vous pouvez spécifier -x plus d'une fois.

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

Dans la section Comparaison des répertoires de info diff (sur mon système, je dois faire info -f /usr/share/info/diff.info.gz ):

Pour ignorer certains fichiers lors de la comparaison des répertoires, utilisez l'option '-xPATTERN' ou '--exclude=PATTERN'. Cette option ignore tous les fichiers ou sous-répertoires dont les noms de base correspondent au modèle du shell PATTERN. Contrairement au shell, un point au début de la base d'un nom de fichier correspond à un caractère générique au début d'un modèle. Vous devez mettreMOTIF entre guillemets afin que le shell ne le développe pas. Par exemple, l'option -x '*.[ao]' ignore tout fichier dont le nom se termine par '.a' ou '.o'.

Cette option s'accumule si vous la spécifiez plus d'une fois. Par exemple, en utilisant les options -x 'RCS' -x '*,v' ignore tout fichier ou sous-répertoire dont le nom de base est 'RCS' ou se termine par ',v'.


Linux
  1. CentOS / RHEL :Comment configurer SFTP pour Chroot Jail uniquement pour un groupe spécifique

  2. CentOS / RHEL :Comment définir la prison chroot pour vsftp uniquement pour des utilisateurs spécifiques

  3. Comment répertorier un type spécifique de fichiers dans des répertoires récursifs en shell ?

  4. Comment faire la différence (uniquement les ajouts) entre deux fichiers sous Linux

  5. Comment supprimez-vous les fichiers antérieurs à une date spécifique sous Linux ?

Comment compter les fichiers dans le répertoire sous Linux

Comment organiser automatiquement des types de fichiers similaires dans des dossiers spécifiques

Comment tarer des types de fichiers spécifiques (extensions) dans un répertoire

Comment compter les fichiers dans le répertoire sous Linux

Comment restaurer une sauvegarde de fichiers/répertoires spécifiques à l'aide de JetBackup 5 ?

Comment définir les autorisations de fichier par défaut pour tous les dossiers/fichiers d'un répertoire ?