批量获取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}
运行结果:文章来源:https://www.toymoban.com/news/detail-698214.html
文章来源地址https://www.toymoban.com/news/detail-698214.html
到了这里,关于shell脚本-批量获取目录下所有文件的md5值、大小、inode值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!