1

我试图每次使用这个以不同的文件作为参数执行一个脚本 n 次:

ls /user/local/*.log | xargs script.pl

(script.pl 接受文件名作为参数)

但是脚本只执行一次。如何解决这个问题?我做的不对吗?

4

3 回答 3

2
 ls /user/local/*.log | xargs -rn1 script.pl

我猜你的脚本只需要一个参数,你需要告诉 xargs 。

如果输入列表为空,则传递 -r 会有所帮助

请注意,通常情况下,以下内容会更好:

 find /user/local/ -maxdepth 1 -type f -name '*.log' -print0 |
       xargs -0rn1 script.pl

它将更安全地处理引用和目录。


要查看 xargs 实际执行的内容,请使用该-t标志。

于 2011-06-30T21:36:01.087 回答
0

我希望这有帮助:

for i in $(ls /usr/local/*.log)
do
  script.pl $i
done
于 2011-07-01T00:54:28.173 回答
0

我会避免使用ls,因为这通常是许多系统上的别名。例如,如果您ls产生彩色输出,那么这将不起作用: for i in ls; 做 ls $i; 完成

相反,您可以让 shell 为您扩展通配符: for i in /usr/local/*.log; 做脚本.pl $i; 完毕

于 2011-07-01T11:30:12.903 回答