shell,逐个管道一个参数列表来命令

时间:2016-09-19 16:20:31

标签: shell awk pipe command-line-arguments

我有一个列表参数需要逐个传递给另一个命令,因为该命令只接受一个参数,我可以使用任何shell管道吗?提前谢谢。

例如,

$ ls -al | awk '{print $9}'

该命令将返回文件夹名称列表,然后我需要将这些名称作为argotment发送到anther命令,该命令仅接受每次执行的命令。

2 个答案:

答案 0 :(得分:4)

我不理解ls -al | awk ...类比。包含此代码示例有什么意义?

如果你有一个以空格分隔的参数列表,那么使用像xargs这样的实用程序命令将默认为每个参数逐个提供一个命令。您可以更改此默认行为,但这似乎不是您需要的。您可以使用xargs,如下所示......

ls -al | awk '{print $9}' | xargs cat

... cat ls -al命令输出的每个文件的内容。这有帮助吗?

应该注意的是ls是瓷器命令,而不是管道命令。换句话说,最好不要依赖ls的输出作为命令管道。但是,像find这样的实用程序是一个管道命令,最好用作管道的一部分。

答案 1 :(得分:1)

我建议使用find

find . -mindepth 1 -maxdepth 1 -type d -exec your_command {} \;

这将为your_command.

当前目录中的任何文件夹调用..