我想在文本文件列表上执行 bash 脚本(for
我猜是使用循环),将 stdout 重定向到与来自 stdin 的文本文件具有相同路径的文件加上扩展名(例如 .txt 或 .sam,或只需在标准输入路径的末尾添加一个 ~ 以使其不同)。
问问题
2980 次
1 回答
4
好的,假设列表不是太长,您可以从
for i in `cat list`
do
# do stuff here
done
如果列表足够长,可能会导致命令行过长,则有一段时间的变体
cat list | while read i
do
# do stuff here
done
您可以使用 basename(1) 构造文件名以摆脱旧的扩展后缀;说 .txt 到 .bak 使用
`basename .txt ${i}`.bak
您可以使用 dirname(1) 获取路径部分
由于宏扩展较早,您可以简单地在变量中构造命令行并扩展它们。其中 op 和 np 是您的路径名
command < $op > $np
有一本可爱的在线书籍,bash Advanced Scripting Guide涵盖了这一点以及更多内容。
于 2012-04-11T16:48:36.000 回答