如何将 cmd 中的以下“for /f”命令转换为 Linux centos 6,64 中的等效命令?

如何将 cmd 中的以下“for /f”命令转换为 Linux centos 6,64 中的等效命令?

如何将以下 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以获得进一步的帮助。

相关内容