之前写的一个shell函数里面用到的find/xargs在遇到一些名称带空格的文件时报错,印象中曾在王垠的博客看到过find与xargs有参数解决这种情况,查了一下需要分别使用-print0
和-0
来把空格当作特殊字符对待。函数是用来对整个目录做cksum,修改后如下:
function check_sum() {
local dir=$1
local dirsum=0
for sum in $(find ${dir} -type f -print0 | xargs -0 cksum | awk '{print $1}')
do
dirsum=$(( ${sum} + ${dirsum} ))
done
echo ${dirsum}
}