J'ai un répertoire ~ 8000 fichiers de la formeUne regex qui fonctionne dans `find`
output/Manuscript_00750_AnimalGiants-compact.json
output/Manuscript_00750_AnimalGiants-expanded.json
output/Manuscript_00750_AnimalGiants.json
output/Manuscript_00752_AnimalGiants-compact.json
output/Manuscript_00752_AnimalGiants-expanded.json
output/Manuscript_00752_AnimalGiants.json
output/Unit_TZH_12345_Foo-compact.json
output/Unit_TZH_12345_Foo-expanded.json
output/Unit_TZH_12345_Foo.json
J'ai besoin de trouver un regex pour travailler avec l'outil find
pour sélectionner tout le manuscrit compact : les
output/Manuscript_00750_AnimalGiants-compact.json
output/Manuscript_00752_AnimalGiants-compact.json
venir avec la regex est la partie facile, mais se find
à coopérer est la partie difficile.
Voici mon regex:
/Manuscript[0-9_a-zA-Z]+-compact\.json/
Voici quelques-unes des commandes que j'ai essayé; tous produisent des résultats zéro. Le CWD est le répertoire ci-dessus output/
:
find output -regex "Manuscript[0-9_a-zA-Z]+-compact\.json"
find output -regex "\./output/Manuscript[0-9_a-zA-Z]+-compact\.json/"
find output -regex ".*\Manuscript[0-9_a-zA-Z]+-compact.*\json"
Mais cette commande ne produira des résultats - il sélectionne tous les fichiers qui commencent par « manuscrit », ce qui est évidemment trop large:
find output -regex ".*\Manuscript.*\json"
Quelle est la bonne Format regex pour find
ici?
Le premier fonctionne - merci! Pouvez-vous expliquer pourquoi? Quel est le ''. */'Au début? – commanda
'. */Manuscript' correspond à 0 caractère ou plus avant slash et 'Manuscript'. Même lorsque ce fichier est dans le répertoire courant, il y aura '. /' Avant 'Manuscript' – anubhava
Pour référence, l'option' -E' est dérivée de FreeBSD, et devrait fonctionner dans NetBSD, DragonflyBSD, mais peut-être pas OpenBSD. – ghoti