我将用一个例子来解释这个问题。假设我想生成一个包含两列的列表。第 1 列包含文件名,第 2 列包含该文件的 md5 和。
这可以使用以下脚本完成:
for FILE in `ls -p | grep -v "/"`;
do
printf "%s %s\n" "$FILE" `md5 -q "$FILE"`;
done;
这可以使用管道在一条线上完成吗?我尝试过使用不同的组合sed
,xargs
但printf
我认为我遗漏了一些东西。这是我的尝试之一:
ls -p | grep -v "/" | xargs -I FILE printf "%s %s\n" FILE `md5 -q FILE`
在那次尝试中,FILE
反引号内部没有被替换,这并不奇怪。
这是我应该只使用多行脚本的那种东西吗?由于没有逻辑或控制流,我觉得单线应该是可能的,也许我没有正确使用我的工具或者我没有找到合适的工具。
为标题道歉,我不知道该怎么称呼这个问题。