如何将以下 CMD 命令转换为 linux centos 6,64 中的命令?
for /f "tokens=1*" %i in (links.txt) do wget -O "%j" "%i"
PS:links.txt 是一个由制表符分隔的两列文件,一列包含链接,另一列包含文件保存方式的名称。
谢谢
答案1
awk
即使可以从文件中读取并在循环中编写所需的命令,但您可能会发现一个更舒适的命令:awk
。
如果文件名全部没有空格,您可以使用这个简单的语法来创建所需的命令,然后将此输出重定向 ( ) 到将执行该命令的|
shell ( )。 取第一列,取第二列,依此类推...sh
$1
$2
awk '{print "wget -O "$2,$1}' links.txt | sh
如果名称中有空格,则需要做更多操作:
awk -F $'\t' '{print "wget -O\""$2"\" " $1}' links.txt | sh
这里必须指定字段分隔符-F
为制表符 ( -F $'\t'
),并且必须打印"
文件名前后的内容。由于您位于字符串内,因此需要转义[2]他们
echo "Those are double quote\""
。
尝试不使用重定向来执行此命令(所以没有| sh
)有可能控制输出,然后在您确定时执行它......
使用man awk
以获得进一步的帮助。