【发布时间】:2017-07-13 04:40:25
【问题描述】:
我想find一些文件并使用管道命令计算shasum。
find . -type f | xargs shasum
但是我的目录中有带引号的文件,例如名为
的文件file with "special" characters.txt
管道输出如下所示:
user@home ~ $ find . -type f | xargs shasum
da39a3ee5e6b4b0d3255bfef95601890afd80709 ./empty1.txt
da39a3ee5e6b4b0d3255bfef95601890afd80709 ./empty2.txt
da39a3ee5e6b4b0d3255bfef95601890afd80709 ./empty3.txt
shasum: ./file:
shasum: with: No such file or directory
shasum: special: No such file or directory
shasum: characters.txt: No such file or directory
25ea78ccd362e1903c4a10201092edeb83912d78 ./file1.txt
25ea78ccd362e1903c4a10201092edeb83912d78 ./file2.txt
文件名中的引号会产生问题。
如何告诉shasum 正确处理文件?
【问题讨论】:
-
您确定需要
xargs吗?find . -type f -exec shasum {} \; -
@chepner, ...好吧,使用
-exec ... \;,xargs可以提高性能,因为我们能够启动更少的shasum实例。也就是说,由于-exec ... {} +可用,是的,没什么意义。 -
在这里,我很确定启动
shasum的开销与实际计算单个文件的校验和的成本相比可以忽略不计。 -
如果文件很大(“不是很小”?),当然。