0

所以我目前的shell脚本是:

for j in *.jpg
do
  tesseract $j $j
done

其中 tesseract 将 jpg 文件转换为文本文件。使用此脚本,如果有文件 HAHA.jpg,则输出文件名变为 HAHA.jpg.txt 但我希望它只是 HAHA.txt

有没有办法将输出文件名设为 HAHA.txt 而不是 HAHA.jpg.txt?

4

3 回答 3

2

如果你有一个 shell 变量j,你可以去掉一个匹配给定模式的后缀,如下所示

${j%%.jpg}

where%%表示最长的匹配后缀应该被移除,并且.jpg是模式(“一个点,后跟三个字母:j、p 和 g”)。

于 2013-03-21T05:43:21.683 回答
0

在你的 tesseract 命令之后添加这一行:

for j in *.jpg
do
  tesseract $j $j
  mv ${j}.txt  ${j/jpg/txt}
done

即使 tesseract 已重命名您的文件,该变量$j仍将包含 HAHA.jpg。

于 2013-03-21T05:49:01.123 回答
0

使用基本名称:

for j in *.jpg
do
  tesseract $j $(basename -s .jpg $j)
done
于 2013-03-21T05:52:03.220 回答