批量获取MD5值
MD5的全称是Message-Digest Algorithm 5,它一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5值等同于文件的ID,它的值是唯一的。 如果文件已被修改,其MD5值将发生变化。
#!/bin/bash
if [ ! -n "$1" ]
then
echo "请带上要查询目录的绝对路径"
exit 1
fi
#定义全局变量存放首层路径
first_path=$1
#获取文件函数
function getfile(){
#进入目录
cd "$1"
for item_path in *
do
#排除目录为空的情况
if [ "${item_path}" != "*" ]
then
#拼接成绝对路径
path=$1"/"${item_path}
#判断是不是目录,是的话调用方法遍历获取目录下的文件
if [ -d ${path} ] && [ "item_path" != "*" ]
then
getfile "${path}"
else
#求出文件MD5值,但去掉根路径
#井号用于代替分隔符,因为路径中符号会影响它
echo `md5sum ${path}` | sed "s#${first_path}##g"
fi
fi
done
}
#调用函数
getfile ${first_path}
运行结果:

批量获取文件大小、inode值
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区",每个扇区储存512字节。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
#!/bin/bash
if [ ! -n "$1" ]
then
echo "请带上要查询目录的绝对路径"
exit 1
fi
#定义全局变量存放首层路径
first_path=$1
#获取文件函数
function getfile(){
#进入目录
cd "$1"
for item_path in *
do
#排除目录为空的情况
if [ "${item_path}" != "*" ]
then
#拼接成绝对路径
path=$1"/"${item_path}
#判断是不是目录,是的话调用方法遍历获取目录下的文件
if [ -d ${path} ] && [ "item_path" != "*" ]
then
getfile "${path}"
else
inode=`stat ${path} | grep Inode | awk '{print $4}'`
inode_len=`echo ${inode} | awk '{print length($0)}'`
let inode_len=10-inode_len
inode_len=`printf "%${inode_len}s"`
size=`du -h ${path} | awk '{print $1}'`
size_len=`echo ${size} | awk '{print length($0)}'`
let size_len=10-size_len
size_len=`printf "%${size_len}s"`
filename=`echo ${path} | sed "s#${first_path}##g"`
echo "${inode}${inode_len}${size}${size_len}${filename}"
fi
fi
done
}
#打印标题
echo "Inode Size FileName"
#调用函数
getfile ${first_path}
运行结果:

该文介绍了两个bash脚本,分别用于批量计算文件的MD5哈希值和获取inode信息及文件大小。MD5用于验证文件传输的完整性,inode是Linux系统中存储文件元信息的数据结构。这两个脚本遍历指定目录及其子目录,对每个文件执行相应操作并输出结果。
1204

被折叠的 条评论
为什么被折叠?



