我想用空格替换所有 pdf 文件名称中的所有特殊字符(即 _?:/)(\-\n\t)
。
我无法做到这一点,所以我只是尝试使用此命令删除它们。
由于某些原因,此命令有时适用于测试用例,但不适用于其他用例。它给出错误 mv: 目标不是目录,并且输入和目标文件的名称相同(如果没有要删除的特殊字符)。
find . -name '*.pdf' -exec sh -c 'if="{}"; of=$(echo $if|tr -d '_:-' ); mv $if $of ;' \;
我希望更改文件名:
a:bc-de_(fg).pdf
成为
a bc de fg .pdf
最佳答案
“mv:目标不是目录”是因为文件名中存在空格,可以通过将文件名放在双引号内来修复。
试试这个
find . -name '*.pdf' -exec sh -c 'if="{}"; of=$(echo $if|tr "()_:-" " " ); mv "$if" "$of" ;' \;
关于bash - 如何使用linux find命令替换所有文件名中的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505974/