shell脚本-批量获取目录下所有文件的md5值、大小、inode值

这篇具有很好参考价值的文章主要介绍了shell脚本-批量获取目录下所有文件的md5值、大小、inode值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

批量获取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}
 

运行结果:

shell获取路径下所有文件,shell脚本,服务器,linux,运维,bash

批量获取文件大小、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}

运行结果:

shell获取路径下所有文件,shell脚本,服务器,linux,运维,bash文章来源地址https://www.toymoban.com/news/detail-698214.html

到了这里,关于shell脚本-批量获取目录下所有文件的md5值、大小、inode值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓keytool获取不到签名文件的MD5

    目前通过 keytool -list -v -keystore xxx.jks 这种方法获取签名的md5时,只能显示SHA1和SHA256,不显示md5: 解决办法: 1.先将自己的keystore配置进app下的build.gradle中: 2.打开AndroidStudio的Gradle,找到Tasks-android-signingReport,双击: 找到Config为release,Alias与你签名文件的别名一致的信息,即可

    2024年02月11日
    浏览(43)
  • APP备案,iOS签名文件MD5、公钥获取方法

    前言 2023年8月,国内开始要求应用市场上架的APP要备案,备案则需要提交安卓APP签名文件中的MD5、公钥等信息,如下图是某平台APP备案需要提交的信息。 获取MD5等信息 最省事方法 针对没有ide工具,没有从事过iOS开发,或想节省时间的朋友,建议通过我们开发的网页来获取

    2024年02月08日
    浏览(42)
  • 获取安卓签名文件的MD5值与SHA1码

    目录 前言 一、用命令行的方式仅能获取SH1、SHA256 ​编辑 二、用gradle的方式可以获取MD5值 1.打开Android Studio,点击右边的Gradle 2.点击大象,输入查询签名信息的命令 总结 公司App项目要备案,要搜集MD5值与SHA1码,用了以前的命令行方式只获取到SHA1,奇怪,网上学习了下,原来

    2024年02月16日
    浏览(57)
  • vue(前端):大文件分片上传(包括如何获取文件MD5、逻辑注释讲解)

    3.1 原生input标签实现上传 3.2 获取文件的MD5 3.3 上传文件 3.4 上传文件到后台

    2024年02月21日
    浏览(43)
  • APP备案,最新获取安卓签名文件中MD5等信息方法

    直接通过cmd执行命令 输入后回车会提示输入密码库口令,直接输入Keystore密码(输入过程中终端上不会显示,输完回车就行) 由于上述以前这种方式是可以打印出MD5,现在这种方式却没把MD5值打印出来,处理办法如下 直接在as中的Terminal工具在命令行中输入gradle命令: 1.导出

    2024年01月21日
    浏览(45)
  • 图像/短视频文件的MD5码的定义、作用以及获取方式

    目录 一、图像/短视频文件的MD5码定义: 二、MD5码的作用: 三、如何获取一个图像/短视频文件的MD5码:         MD5(Message-Digest Algorithm 5)是一种常用的哈希算法,用于计算文件的哈希值。哈希值是一个固定长度的字节序列,可以用于验证文件的完整性和唯一性。    

    2024年02月15日
    浏览(43)
  • Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

    一、创建Android签名文件         使用Android Studio开发工具,可视化窗口进行创建 第一步:点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步:选择APK选项    第三步:创建签名文件 第四步:输入创建签名的文件的各内容信息 点击ok,即可完成签名的文件的创建

    2024年02月07日
    浏览(61)
  • go获取文件md5后接着读取file对象EOF的问题记录

    目录 背景 分析 第一步:读取文件,获得file对象 第二步:获取文件md5 第三步:获取到md5后继续使用(读取)file对象,发现一次就读完了(EOF),但实际一次不可能读完 代码如下: 如上代码中,在获得该文件的md5后,file对象此时已指向文件末尾,因此接着读取必然是EOF直接

    2024年01月19日
    浏览(37)
  • 如何将一个目录下的所有md文件导出成pdf

    要将一个目录下的所有Markdown(.md)文件导出为PDF,您可以使用Node.js进行编程来实现。以下是一种可能的方法: 首先,您需要设置Node.js环境并安装依赖项。在命令行中导航到您的项目目录,并运行以下命令: 创建一个名为 convert.js 的JavaScript文件,并在其中编写以下代码:

    2024年02月16日
    浏览(47)
  • 用git bash调用md5sum进行批量MD5计算

    对于非常大的文件或者很重要的文件,在不稳定的网络环境下,可能文件的某些字节会损坏。此时,对文件计算MD5即可以校验其完整性。比如本次的 OpenStreetMap 导出包,我的学弟反馈说,有朋友通过网盘下载无法解压,并建议我增加每个文件的MD5校验。 对于文件非常多的情况

    2024年01月24日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包