![如何对多个文件执行命令并根据输入文件的名称将输出重定向到不同的文件](https://linux22.com/image/821454/%E5%A6%82%E4%BD%95%E5%AF%B9%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E5%B9%B6%E6%A0%B9%E6%8D%AE%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E7%9A%84%E5%90%8D%E7%A7%B0%E5%B0%86%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%E6%96%87%E4%BB%B6.png)
我正在尝试使用 catdvi 转换一批乳胶文件。
我对单个文件使用的命令是:
catdvi -e 1 -U 1.dvi | sed -re "s/\[U\+2022\]/*/g" | sed -re "s/([^^[:space:]])\s+/\1 /g" > 1.txt
但是,我想对从 1.dvi 到 30.dvi 的所有文件运行相同的命令。当我这样做时:
for f in *.dvi ; do catdvi -e 1 -U $f | sed -re "s/\[U\+2022\]/*/g" | sed -re "s/([^^[:space:]])\s+/\1 /g" > "${f%.dvi}.txt"; done;
它给出一个错误,需要 0 个或 1 个参数,但得到了 10 个,等等。
我需要对命令做什么更改?
答案1
类似问题的答案也适用于此处。因此,以下是链接: