gpt4 book ai didi

bash - 重用或重复管道输入作为命令中的参数(给出的示例)

转载 作者:行者123 更新时间:2023-11-29 09:08:17 25 4
gpt4 key购买 nike

我会用一个例子来解释这个问题。假设我想生成一个包含两列的列表。第 1 列包含文件名,第 2 列包含该文件的 md5 和。

这可以使用以下脚本完成:

for FILE in `ls -p | grep -v "/"`;
do
printf "%s %s\n" "$FILE" `md5 -q "$FILE"`;
done;

这可以使用管道在单行上完成吗?我试过使用 sedxargsprintf 的不同组合,但我想我遗漏了一些东西。这是我的尝试之一:

ls -p | grep -v "/" | xargs -I FILE printf "%s %s\n" FILE `md5 -q FILE`

在那次尝试中,反引号内的 FILE 没有被替换,这并不奇怪。

在这种情况下我应该只使用多行脚本吗?由于没有逻辑或控制流,我觉得单线应该是可能的,也许我没有正确使用我的工具,或者我没有找到合适的工具。

为标题道歉,我不知道如何称呼这个问题。

最佳答案

你可以使用md5sum,因为我没有md5 :)

ls -p | grep -v / | xargs md5sum | awk '{print $2,$1}'

这可能是一种更安全、更可靠的方式:

find -maxdepth 1 -type f -exec md5sum {} \; | awk '{s=$2; $2=$1; $1=s;}1'

这应该适用于 md5:

find -maxdepth 1 -type f -exec md5sum {} \; | sed 's/[^(]*(\([^)]*\)) =/\1/'

关于bash - 重用或重复管道输入作为命令中的参数(给出的示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com