2017-05-31 1 views
0

Comment échapper à un caractère spécial @ dans le modèle de nom de fichier de recherche?bash Comment échapper specialcharacter '@' dans le modèle de nom de fichier?

ce code ne fonctionne pas (résultat vide)

for file in *[email protected]; do echo "$file"; done 

aussi essayé ceci:

for i in *[email protected]; do mv "$i" "${i/[email protected]}"@2x.png; done 

Je dois renommer les fichiers *[email protected]-*@2x.png

+1

backslash utilisation fo échapper – Jens

+0

ne fonctionne pas trop pour le fichier dans * \ @ 2. png; fais écho "$ file"; fait Je reçois * \ @ 2.png –

+0

ou utilise des guillemets simples – tso

Répondre

0

Vérifiez que le fichier existe

for file in *[email protected]; do 
    [[ -e $file ]] || continue # to skip file which not exists 
    ... 
done 

Utilisation des options du shell. Si l'option de failglob est pas défini lorsque vous ne glob correspondre à la glob *[email protected] ÉTENDU pour se

shopt globfail  # to check value 
shopt -s globfail # to turn on 
shopt -u globfail # to turn off 
0

résolu

for i in *.png; do mv "$i" "${i/[email protected]/@2x.png}" ; done 
+0

Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire concernant la façon et/ou la raison pour laquelle il résout le problème améliorerait la valeur à long terme de la réponse. – Badacadabra