0

我创建了这个愚蠢的脚本:

#!/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 i 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
4

3 回答 3

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
于 2013-08-25T15:34:02.820 回答
1

编辑:当文件为 *.esp.srt 时,我的脚本有效。但如果文件是 * (Español (España)).srt 则不起作用

嗯,是的。那是因为这条线

对于 *.esp.srt 中的 i

只寻找没有结尾.esp.srt的东西。"whatever" (Español (España)).srt如果你想使用

for i in *(Español (España)).srt

然后,正如您所暗示的那样,您需要考虑括号。放在""它周围。

于 2013-08-25T15:41:50.730 回答
1

你可以试试跑步

detox *

前。

http://detox.sourceforge.net/

于 2013-08-25T15:25:37.273 回答