我是脚本新手,并且需要从文件中更改特殊字符并替换为其他字符。
以下是我必须用?
替换_
的文件名。
档案 - 21041159?74DECL?ARAÇÃO14581?5904289?6770700.pdf
结果 - 21041159_74DECL_ARAÇÃO14581_5904289_6770700.pdf
find . -depth -name '*\?*' -type f -execdir bash -c 'mv "$1" "${1/\?/_}"' -- {} \;
上面的脚本将问号的第一次出现更改为下划线,但不是从完整的文件名。
请建议可以做些什么?
答案 0 :(得分:2)
您问题的简化版本是:
我可以用
${var/foo/bar}
替换bash变量中字符串的 first 次出现。如何替换所有次事件?
答案是使用双斜杠:${var//foo/bar}
。
在上下文中,它将是:
find . -depth -name '*\?*' -type f -execdir bash -c 'mv "$1" "${1//\?/_}"' -- {} \;
# Here --^