运行 带有文件模式的命令
run a command with a file pattern
我有这个文件
patterns.txt
a
b
c
d
e
我想 运行 每个模式的特定命令,如下所示:
scp username@hostname:/name/a
scp username@hostname:/name/b
scp username@hostname:/name/c
scp username@hostname:/name/d
scp username@hostname:/name/e
我试过像这样使用 for 循环:
#!/bin/bash
cat pattern.txt
for i in $pattern.txt
do
scp username@hostname:/name/$i
done
但我没有工作
两种典型的方法是:
while read i; do
scp username@hostname:/name/"$i"
done < patterns.txt
和
sed 's#^#username@hostname:/name/#' patterns.txt | xargs -L 1 scp
请注意,我预计这两个都会失败,因为 scp
预计至少有 2 个参数。您希望第二个参数如何适合您 运行 的命令将改变您为此使用 xargs
的方式。
例如,如果你想执行scp username@hostname:/name/a .
,你可以这样做:
sed 's#^#username@hostname:/name/#' patterns.txt |
xargs -L 1 -J % scp % .
你也可以for i in $(cat patterns.txt)
,但你不应该这样做。
我有这个文件 patterns.txt
a
b
c
d
e
我想 运行 每个模式的特定命令,如下所示:
scp username@hostname:/name/a
scp username@hostname:/name/b
scp username@hostname:/name/c
scp username@hostname:/name/d
scp username@hostname:/name/e
我试过像这样使用 for 循环:
#!/bin/bash
cat pattern.txt
for i in $pattern.txt
do
scp username@hostname:/name/$i
done
但我没有工作
两种典型的方法是:
while read i; do
scp username@hostname:/name/"$i"
done < patterns.txt
和
sed 's#^#username@hostname:/name/#' patterns.txt | xargs -L 1 scp
请注意,我预计这两个都会失败,因为 scp
预计至少有 2 个参数。您希望第二个参数如何适合您 运行 的命令将改变您为此使用 xargs
的方式。
例如,如果你想执行scp username@hostname:/name/a .
,你可以这样做:
sed 's#^#username@hostname:/name/#' patterns.txt |
xargs -L 1 -J % scp % .
你也可以for i in $(cat patterns.txt)
,但你不应该这样做。