进来的文件包含空格,单引号,括号,方括号等。
我删除空格并用以下命令替换点
for file in *.mp4; do mv "$file" `echo $file | tr ' ' '.'` ; done
然后我使用以下命令删除特殊字符
rename -n 's/[^a-zA-Z0-9_-]//g' "$file"
但由于某些原因,单引号(')仍然存在于文件名中。有没有办法在一个命令中使用干净的文件名?
答案 0 :(得分:2)
在bash中:
for file in *.mp4; do dest="${file//[[:space:]]/.}" && mv -i "$file" "${dest//[^[:alnum:]._-]/}"; done
答案 1 :(得分:0)
sed命令是满足您要求的选项之一。
for file in *.mp4 ; do echo ${file}|sed -e "s/ /./g" -e "s/[\[{\\']//g" ; done
示例:
$ for file in *.mp4 ; do echo $file; done
as {df [jk \'hj.mp4
as {df[jk \'hj.mp4
as {df[jk\'hj.mp4
as {df [jk \'.mp4
$
$ for file in *.mp4 ; do echo ${file}|sed -e "s/ /./g" -e "s/[\[{\\']//g" ; done
as.df.jk.hj.mp4
as.dfjk.hj.mp4
as.dfjkhj.mp4
as.df.jk..mp4
$