#1 Le 02/12/2022, à 08:45
- Compte supprimé
[Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Bonjour,
Je souhaite trouver tous les fichiers vidéo présents sur un disque externe (issu d'un pc win$ cassé) en omettant de la recherche un ou plusieurs répertoires.
Pour lister l'ensemble, je fais:
find /media/$USER/TI31378800A/ -type f \( -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi' \)
Cependant, je veux exclure de la recherche les fichiers comme:
/media/$USER/TI31378800A/Windows/WinSxS/amd64_microsoft-windows-tabletpc-inputpanel_31bf3856ad364e35_6.3.9600.17415_none_029a10ad4b3fc01a/split.avi
J'ai essayé en vain d'exclure de la recherche le répertoire /media/fab/TI31378800A/Windows/ comme avec:
find /media/$USER/TI31378800A/ -type f \( -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi' \) -path "/media/$USER/TI31378800A/Windows" -prune -print
Comment dois-je m'y prendre?
Merci
Dernière modification par Compte supprimé (Le 02/12/2022, à 16:24)
#2 Le 02/12/2022, à 09:51
- Tawal
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Hello,
Essaie plutôt ceci :
find /media/$USER/TI31378800A/ -type f -path "/media/$USER/TI31378800A/Windows" -prune -o \( -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi' \) -print
qui, je pense peut se simplifier en :
find /media/$USER/TI31378800A/ -type f -path "/media/$USER/TI31378800A/Windows" -prune -o -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi'
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#3 Le 02/12/2022, à 10:01
- Compte supprimé
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Hello,
Le répertoire n'est toujours pas exclu de la recherche.
#4 Le 02/12/2022, à 11:29
- Tawal
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Essaie de changer la position de -type f comme ceci :
find /media/$USER/TI31378800A/ -path "/media/$USER/TI31378800A/Windows" -prune -type f -o -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi'
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#5 Le 02/12/2022, à 11:33
- Hizoka
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Bonjour et avec:
find /media/$USER/TI31378800A/ -type f \( -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi' \) -not -path "/media/$USER/TI31378800A/Windows/*"
?
Perso ça fonctionne avec mon test :
find /home/hizoka/Download/ -type f -not -path "/home/hizoka/Download/Nouveau dossier/*"
il me liste tout le dossier et ses sous dossiers mais rien en lien avec le dossier Nouveau dossier
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 02/12/2022, à 11:53
- Tawal
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Ce qui est étrange, c'est que le manuel de find indique que pour exclure un répertoire et ses sous-répertoires et fichiers, il faut utiliser la forme :
-path MOTIF -prune
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#7 Le 02/12/2022, à 12:36
- Compte supprimé
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
Essaie de changer la position de -type f comme ceci :
find /media/$USER/TI31378800A/ -path "/media/$USER/TI31378800A/Windows" -prune -type f -o -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi'
Ouiiii! Parfait!
@Hizoka:
Ta proposition fonctionne aussi . Cependant, je constate qu'elle mets plus de temps à faire le job.
Je vous remercie.
#8 Le 02/12/2022, à 15:21
- Compte supprimé
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
par contre si je veux exclure plusieurs dossiers, comme ci-dessous:
find /media/$USER/TI31378800A/ -path "/media/$USER/TI31378800A/Users/toshiba/Videos" -prune -o -path "/media/$USER/TI31378800A/Windows" -prune -type f -o -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi'
Le nom du premier dossier exclu sera aussi retourné (pas son contenu) . Soit media/fab/TI31378800A/Users/toshiba/Videos
??
édité
Dernière modification par Compte supprimé (Le 02/12/2022, à 16:12)
#9 Le 02/12/2022, à 16:18
- Hizoka
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
A priori prune retourne le nom du dossier.
-not -path est plus long car il va quand même dans les dossiers.
https://stackoverflow.com/questions/421 … using-find
Dernière modification par Hizoka (Le 02/12/2022, à 16:20)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 02/12/2022, à 16:24
- Compte supprimé
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
find /media/$USER/TI31378800A/ \( -path "/media/$USER/TI31378800A/Users/toshiba/Videos" -o -path "/media/$USER/TI31378800A/Windows" \) -prune -type f -o -iname '*.mov' -o -iname '*.mp4' -o -iname '*.avi'
Mais oui, tout simplement
Je croyais pourtant avoir essayé...
Merci. Affaire conclue!
Dernière modification par Compte supprimé (Le 02/12/2022, à 16:28)
#11 Le 02/12/2022, à 16:32
- Compte supprimé
Re : [Résolu!]exclure un ou plusieurs répertoires d'une recherche find
A priori prune retourne le nom du dossier.
-not -path est plus long car il va quand même dans les dossiers.
Ben, dans le cas présenté ci-dessus, le nom du dossier n'est pas retourné...