Je ne sais pas ce que je fais de mal à ce sujet. J'ai lu un tas d'articles et de sites Web, mais j'ai toujours des problèmes.
J'ai besoin de vérifier un système pour les fichiers qui ont changé au cours de la dernière journée, mais je dois ignorer certains dossiers montés car ils sont montés sur des lecteurs avec des tonnes de To.
Voici la configuration :
J'ai quelques lecteurs montés dans des dossiers à l'intérieur de /usr/local/connect/
/usr/local/connect/logs –> se monte sur un NFS
/usr/ local/connect/DR01 – > se monte sur un partage DR
quelques autres comme celui-ci…
Je veux exécuter une commande de recherche normale (ou toute commande qui fonctionnerait pour cela) qui exclut ces répertoires. Voici quelque chose que j'ai essayé et qui n'a pas semblé fonctionner.
trouver . ! -chemin "/usr/local/connect/" -type f -nom "*.txt" -mtime -1
trouver . -type f -path "/usr/local/connect/" -prune -o -name "*.txt" -mtime -1
Aucun de ceux-ci ne semble fonctionner. J'ai également essayé de le faire dans différents ordres (comme -type f en premier, ou élaguer en premier, etc.). Mais j'ai lu prune supprime le chemin de procédure. Cela semble être une chose facile à faire. Faites-moi savoir si vous voyez mon erreur! Merci d'avance !
Réponse acceptée :
-path "/usr/local/connect/"
correspondrait uniquement sur un chemin de fichier qui est exactement /usr/local/connect/
. Cela ne correspondra jamais car avec find .
, tous les chemins commenceront par .
Alors vous voudriez :
find / -path '/usr/local/connect/*' -type d -prune -o \
-name '*.txt' -type f -mtime -1 -print
Le -print
est également important. Sans cela, il y aurait un -print
implicite pour les fichiers qui correspondent à l'expression entière (donc les deux parties du -o
).
Notez que vous pouvez également utiliser -xdev
pour empêcher de franchir les limites du système de fichiers.
Si vous voulez l'exécuter avec find .
lorsque le répertoire courant est /usr/local
, cela devrait être :
cd /usr/local &&
find . -path './connect/*' -type d -prune -o \
-name '*.txt' -type f -mtime -1 -print