find
带有参数的Linuxexec
命令在文件/文件夹上执行命令时会执行出色的工作,无论它们是否包含空格和特殊字符。例如:
find . -type f -exec md5sum {} \;
可以很好地md5sum
在目录树中的每个文件上运行,但是以随机顺序执行。Find不会对结果进行排序,而是需要使用管道才能sort
以更易于理解的顺序获取结果。但是,使用管道sort
消除了的好处exec
。
这不起作用:
find . -type f | sort | md5sum
因为某些文件名包含空格和特殊字符。
也行不通:
find . -type f | sort | sed 's/ /\\ /g' | md5sum
仍然不能识别空格是文件名的一部分。
我想我以后总是可以对最终结果进行排序,但是想知道是否有人知道一种简单的方法来避免在其中进行排序find
吗?
find
一个-s
参数可用于请求字典顺序。
find . -s -type f -exec md5sum -- '{}' +
find
使用NUL分隔符可以明确处理文件名。假设您拥有GNU工具:
find . -type f -print0 | sort -z | xargs -0 md5sum
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句