我创建了这个愚蠢的脚本:
#!/bin/bash
#archivo=0
for i in *.esp.srt
do
iconv -f=ISO8859-1 -t=UTF-8 "$i" > "$i.srt"
done
但我必须先重命名文件才能正确执行脚本。如果调用该文件,例如:
“无论什么”(Español(España))。srt
它不起作用。
我已经尝试在我的脚本中更改此行: for in in *(Español(España))。srt
但显然,我做错了,因为它不起作用。
编辑:当文件为* .esp.srt时,我的脚本有效。 但如果文件是*(Español(España))。srt
,它就不起作用Edit2:现在可以了:
#!/bin/bash
#archivo=0
for i in *" (Español (España)).srt"
do
iconv -f=ISO8859-1 -t=UTF-8 "$i" > "${i%% "(Español (España)).srt"}.esp.srt"
rm *" (Español (España)).srt"
done
答案 0 :(得分:1)
答案 1 :(得分:1)
尝试这样的事情:
mkdir -p converted && \
for i in *.esp.srt *Esp*.srt
do
iconv -f=ISO8859-1 -t=UTF-8 "$i" > "converted/$i"
done
另外,您如何真正希望转换文件名?您还应该知道,使用您的代码,您的输出将变为something.srt.srt
。如果你想将你的扩展名替换为.utf8.srt之类的东西,那就这样做(假设你的文件以.esp.srt结尾):
for i in *.esp.srt
do
iconv -f=ISO8859-1 -t=UTF-8 "$i" > "${i%%.esp.srt}.utf8.srt"
done
同样,您可以为"whatever" .(Español (España)).srt
等文件添加另一个循环:
for i in *'.(Español (España)).srt'
do
iconv -f=ISO8859-1 -t=UTF-8 "$i" > "${i%%'.(Español (España)).srt'}.utf8.srt"
done
答案 2 :(得分:1)
是的,是的。那是因为这一行编辑:当文件为* .esp.srt时,我的脚本有效。但如果文件是*(Español(España))。srt
,它就不起作用
表示我在* .esp.srt
仅查找.esp.srt
中"whatever" (Español (España)).srt
未结束的内容。如果你想使用
for i in *(Español(España))。srt
然后你需要考虑括号,正如你暗示的那样。把""
放在它周围。