bash如何逃避特殊字符' @'在文件名模板?

时间:2017-05-31 09:18:32

标签: bash templates filenames

如何在搜索文件名模板中转义特殊字符@

此代码无效(空结果)

for file in *_@2.png; do echo "$file"; done

也尝试了这个:

for i in *_@2.png; do mv "$i" "${i/_@2.png}"@2x.png; done

我需要将文件*_@2.png重命名为*@2x.png

2 个答案:

答案 0 :(得分:0)

检查文件是否存在

for file in *_@2.png; do
    [[ -e $file ]] || continue  # to skip file which not exists
    ...
done

使用shell选项。 如果未在glob匹配时未设置failglob选项,则glob *_@2.png将扩展为自身

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

答案 1 :(得分:0)

解决

for i in *.png; do mv "$i" "${i/_@2.png/@2x.png}" ; done