【发布时间】:2022-07-13 21:29:49
【问题描述】:
我在解析命令的结果时遇到问题:
find / -type f -not \( -path '/dev/*' -or -path '/proc/*' -or -path '/sys/devices/*' \) -print0 |
xargs -0 bash -c 'paste -d " " <(md5sum "$@") <(sha1sum "$@") <(sha256sum "$@") <(du -lh "$@")' bash
给我这个:
c37967f401d16fa37736cbe08809d3d66c8f516a /etc/vmware-tools/resume-vm-default 1aae06b3e3db93584b27ddf24ecd58e7a080f33c160f0186ec9b50ab32bc9a92 /etc/vmware- tools/resume-vm-default 4.0K /etc/update-manager/release-upgrades
但我不希望用空格分隔它们,因为文件名中出现空格,因此无法解析它们。
我怎样才能得到这样的东西: c37967f401d16fa37736cbe08809d3d66c8f516a; /etc/vmware-tools/resume-vm-default ; 1aae06b3e3db93584b27ddf24ecd58e7a080f33c160f0186ec9b50ab32bc9a92; /etc/vmware- 工具/简历-vm-default; 4.0K; /etc/update-manager/release-upgrades;
我不知道如何更改我的值之间的分隔符。
【问题讨论】:
-
paste通常有几个输入文件并将它们组合起来。您只输入paste标准输入。不知道你想在这里实现什么。 -
什么能让我的问题更清楚?
-
专注于粘贴命令本身。
find和xargs似乎与您的问题无关。如果我理解正确,您在标准输入中有大量行,并且您想将这些行组合成一行,其中原始标准输入行现在用分号分隔。对吗? -
啊,我的错。由于工艺替代。您确实有多个输入。在这种情况下,为什么不简单地使用
-d';'onpaste? -
paste -d ';'怎么样?然后记录中的第一个单词是哈希或大小,其余的是文件名。