2017-05-31 117 views
0

如何在搜索文件名模板中跳出特殊字符@bash如何在文件名模板中轉義特殊字符'@'?

此代碼不能正常工作(空結果)

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

也試過這樣:

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

我需要將文件重命名*[email protected]*@2x.png

+1

用反斜槓逃逸FO它 – Jens

+0

不也工作在* \ @ 2文件。 PNG;做回聲「$文件」;完成 我得到* \ @ 2.png –

+0

或使用單引號 – tso

回答

0

檢查文件是否存在

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

使用shell選項。 如果當不匹配glob的水珠failglob選項未設置*[email protected]擴大到自身

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

解決

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

儘管此代碼可能會回答問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文可以提高答案的長期價值。 – Badacadabra