for file in *.; do mv "$file" `echo $file | tr " " '_'` ; done **(for spaces)**
现在我经常遇到带有逗号,撇号,括号和其他字符的文件.如何修改命令以删除此类字符?
还尝试重命名’s / [^ a-zA-Z0-9 _-] //’* .mp4但它似乎没有删除空格或逗号
解决方法 如果你向它添加g修饰符,你的重命名将起作用,这将执行所有替换而不是仅执行第一个替换:$echo "$file"foo bar,spam.egg$rename -n 's/[^a-zA-Z0-9_-]//' "$file"foo bar,spam.egg renamed as foobar,spam.egg$rename -n 's/[^a-zA-Z0-9_-]//g' "$file"foo bar,spam.egg renamed as foobarspamegg
您可以通过参数扩展单独使用bash:
>为了从文件名中删除除a-zA-Z0-9_-之外的所有内容,假设变量文件包含文件名,使用字符类[:alnum:]匹配当前语言环境中的所有字母字符和数字:
"${file//[^[:alnum:]_-]/}"
或明确地,将LC_ColLATE更改为C:
"${file//[^a-zA-Z0-9_-]/}"
例:
$file='foo bar,spam.egg'$echo "${file//[^[:alnum:]_-]/}"foobarspamegg总结
以上是内存溢出为你收集整理的linux – 如何删除文件名中的特殊字符?全部内容,希望文章能够帮你解决linux – 如何删除文件名中的特殊字符?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)