如何在查找的特定执行中使用管道(在 bash 中)

发布于 2024-11-05 21:46:38 字数 383 浏览 5 评论 0原文

我必须使用 shell 命令的输出构建一个 csv; csv 文件必须为每一行包含一些通过 stat 命令的输出获得的信息,并在最后一列中包含 md5sum (仅是没有文件名的总和)

我尝试了一些命令,例如:

find . -exec stat --printf='"%a";"%F"' {} \; -exec sh -c "md5sum $1 | cut -b-32" {} {} \;

但是这个块并要求我输入

这个,

find . -exec stat --printf='"%a";"%F";' {} \; -exec md5sum {} | cut -b-32 \;

但是在这种情况下,管道不起作用。

我该如何解决?

I have to construct a csv with the output of a shell command; the csv file must contain for each row some information get by the output of stat command and in the last column the md5sum (only the sum without the filename)

I tried some command like:

find . -exec stat --printf='"%a";"%F"' {} \; -exec sh -c "md5sum $1 | cut -b-32" {} {} \;

but this block and ask me for input

and this,

find . -exec stat --printf='"%a";"%F";' {} \; -exec md5sum {} | cut -b-32 \;

but in this case the pipe doesn't work.

How can I solve it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幽梦紫曦~ 2024-11-12 21:46:38

我认为您把 {}; 放错了地方。这个在 Linux 上对我来说工作得很好:

find . -exec stat --printf='"%a";"%F";' {} \; -exec sh -c "md5sum {} | cut -b-32" \;

更新 1

您也可以将所有内容组合在一个 -exec 选项中,如下所示:

find . -exec sh -c "stat --printf='\"%a\";\"%F\";' {} && md5sum {} | cut -b-32" \;

I think you have {} and ; misplaced. This one is working fine for me on Linux:

find . -exec stat --printf='"%a";"%F";' {} \; -exec sh -c "md5sum {} | cut -b-32" \;

Update 1

You can combine all in one -exec option like this also:

find . -exec sh -c "stat --printf='\"%a\";\"%F\";' {} && md5sum {} | cut -b-32" \;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文