J'ai besoin de trouver chaque dossier contenant plus d'un PDF dans une structure de dossiers mais en cachant les fichiers cachés tels que .HResource
qui s'infiltrent dans notre système de fichiers.
Je veux seulement filtrer les dossiers qui ont HiRes dans le nom de fichier.
Idéalement, je veux exécuter cette opération au niveau supérieur pour qu'elle recherche chaque dossier avec HiRes et qu'elle rejette les dossiers contenant plus d'un PDF.
Le système d'exploitation est RHEL 7 et cette commande peut être exécutée en tant qu'utilisateur/root si nécessaire.
Je me suis amusé avec
find -type f -iname '*.pdf' -iname '*HiRes*' ! -iname '.*' -printf '%h\n' | sort | uniq -d
mais j'ai eu très peu de chance jusqu'à présent, car les fichiers cachés continuent de s'afficher, ce qui donne des milliers de faux positifs dans un système de 11 000 dossiers. Par exemple, avec la structure de répertoire suivante,
.
|--Apples.HiRes1
| |--Gala.pdf
| |--Granny Smith.pdf
| |--McIntosh.pdf
| |--Red Delicious.pdf
|--Banana-HiRes2
| |--upper.pdf
| |--subdir
| | |--lower.pdf
|--Cherry_HiRes3
| |--Bing.pdf
| |--Blossom.jpg
| |--.pesky
| |--.hidden
| |--.files
| |--.HResource
|--Dates (HiRes4)
| |--Midsummer.Pdf
| |--New Year’s Eve.PDF
|--Employees
| |--Fred.pdf
| |--Ginger.pdf
| |--New Hires
| | |--Sam Malone.pdf
| | |--Woody Boyd.pdf
|--Gemstones
| |--Rubies
| | |--1.pdf
| | |--2.pdf
| |--Sapphires
| | |--3.pdf
| | |--4.pdf
|--Tomato.HiRes
| |--Bacon
| |--Lettuce
| | |--5.pdf
| | |--6.pdf
|--Zucchini.LoRes
| |--Bread.pdf
| |--Squash.pdf
la sortie devrait être
./Apples.HiRes1
./Dates (HiRes4)
Notez que
-
Cherry_HiRes3
est exclu car il ne contient qu'un seul fichier PDF. -
Banana-HiRes2
etTomato.HiRes
sont exclus parce qu'ils ont deux fichiers PDF sous mais pas sur les. -
Zucchini.LoRes
est exclu (évidemment) parce que son nom aLoRes
plutôt queHiRes
.