Les Expressions régulières pour le nom de fichier correspondant
En Bash, comment correspondent à une expression régulière avec plusieurs critères à l'encontre d'un nom de fichier?
Par exemple, j'aimerais correspondre à l'encontre de tous les fichiers .txt ou .journal des terminaisons.
Je sais comment faire correspondre un type de critères:
for file in *.log
do
echo "${file}"
done
Quelle est la syntaxe pour un ou logique pour correspondre à deux ou plus de deux types de critères?
OriginalL'auteur Mike | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
Le faire de la même manière que vous le feriez invoquer
ls
. Vous pouvez spécifier plusieurs caractères spéciaux les uns après les autres:vous devez définir le nullglob option shell à l'aide de la shopt builting pour éviter cela
OriginalL'auteur John Kugelman
Bash ne prend pas en charge les expressions régulières en soi lors de l'expansion (nom de fichier correspondant). Son expansion syntaxe, cependant, peut être tout à fait polyvalent. Par exemple:
appliquera la boucle de contenu sur tous les fichiers qui commencent par Un et à la fin dans un B, puis un point, et une des extensions suivantes:
Il applique également la boucle de commandes à un fichier commençant par Z, suivie par un chiffre dans la gamme de 0 à 5, puis par l' .c extension.
Si vous voulez vraiment/besoin, vous pouvez activer l'étendue d'expansion avec le shopt builtin:
ce qui permet alors de manière significative plus de fonctionnalités, tout en faisant correspondre les noms de fichiers, tels que les sous-modèles, etc.
Voir le manuel de Bash pour plus d'informations sur les expressions:
http://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching
EDIT:
Si une expression ne correspond pas à un nom de fichier, bash par défaut, remplacer l'expression elle-même (par exemple, il se fera l'écho *.txt) plutôt qu'une chaîne vide. Vous pouvez changer ce comportement en définissant la nullglob option shell:
Ce sera de remplacer un *.txt qui n'a pas de correspondance de fichiers avec une chaîne vide.
EDIT 2:
Je vous suggère également de vérifier la
shopt
builtin et de ses options, depuis un certain nombre d'entre eux touchent modèle de nom de fichier correspondant, ainsi que d'autres aspects de la coque:http://www.gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin
OriginalL'auteur thkala
OriginalL'auteur ajreal
Vous suffit d'ajouter les autres conditions à la fin:
Donc dans votre cas:
OriginalL'auteur Error 454
Vous pouvez également le faire:
qui pourrait être facilement étendu à plus de solutions de rechange:
OriginalL'auteur Dennis Williamson
L'expression régulière est mise en correspondance avec le chemin d'accès complet, y compris les répertoires.
OriginalL'auteur mpapis