linux – 如何删除文件名中的特殊字符?
发布时间:2020-12-14 00:32:24 所属栏目:Linux 来源:网络整理
导读:在创建播放列表时,我经常遇到会破坏播放过程的文件.这将是带有空格或撇号的文件.我会用以下命令修复它 for file in *.; do mv "$file" `echo $file | tr " " '_'` ; done **(for spaces)** 现在我经常遇到带有逗号,撇号,括号和其他字符的文件.如何修改命令以
在创建播放列表时,我经常遇到会破坏播放过程的文件.这将是带有空格或撇号的文件.我会用以下命令修复它
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |