Shell 如何创建文件名为file_的文件作为present命令的输出?

Shell 如何创建文件名为file_的文件作为present命令的输出?,shell,touch,md5,xargs,Shell,Touch,Md5,Xargs,问题 我有一个文件在/home/user/Samples/文件夹中,现在我有一个单独的文件夹/home/user/Reports/。假设我在Samples文件夹中有一个sampleDOG.zip文件,现在我想生成此示例的报告并将其存储在Reports文件夹中,并将其命名为文件的MD5 我所做的 cd /home/user/Samples/ md5sum DOG.zip | xargs touch ../Reports/{} 但这会在Reports文件夹中生成{}文件,而不是以md5作为文件名的

问题

我有一个文件在
/home/user/Samples/
文件夹中,现在我有一个单独的文件夹
/home/user/Reports/
。假设我在Samples文件夹中有一个sample
DOG.zip
文件,现在我想生成此示例的报告并将其存储在Reports文件夹中,并将其命名为文件的
MD5

我所做的

cd /home/user/Samples/
md5sum DOG.zip | xargs touch ../Reports/{}
但这会在Reports文件夹中生成
{}
文件,而不是以md5作为文件名的空文件


有关于如何解决此问题的建议吗?

您需要将
-i
添加到xargs以“启用”
{}
占位符:

$ seq 10 | xargs echo foo{}
foo{} 1 2 3 4 5 6 7 8 9 10
$ seq 10 | xargs -i echo foo{}
foo1
foo2
foo3
foo4
foo5
foo6
foo7
foo8
foo9
foo10

我不知道你想要什么。我想你不需要触摸/home/user/Reports/md5。类似于
file=DOG.zip;md5sum“${file}”;触摸“./Reports/${file}”
,或对所有结果执行此操作,或将md5的输出重定向到报告中的文件,或将名称从
DOG.zip
更改为
DOG.md5