批量獲取MD5值
MD5的全稱是Message-Digest Algorithm 5,它一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。MD5值等同于文件的ID,它的值是唯一的。 如果文件已被修改,其MD5值將發(fā)生變化。
#!/bin/bash
if [ ! -n "$1" ]
then
echo "請(qǐng)帶上要查詢目錄的絕對(duì)路徑"
exit 1
fi
#定義全局變量存放首層路徑
first_path=$1
#獲取文件函數(shù)
function getfile(){
#進(jìn)入目錄
cd "$1"
for item_path in *
do
#排除目錄為空的情況
if [ "${item_path}" != "*" ]
then
#拼接成絕對(duì)路徑
path=$1"/"${item_path}
#判斷是不是目錄,是的話調(diào)用方法遍歷獲取目錄下的文件
if [ -d ${path} ] && [ "item_path" != "*" ]
then
getfile "${path}"
else
#求出文件MD5值,但去掉根路徑
#井號(hào)用于代替分隔符,因?yàn)槁窂街蟹?hào)會(huì)影響它
echo `md5sum ${path}` | sed "s#${first_path}##g"
fi
fi
done
}
#調(diào)用函數(shù)
getfile ${first_path}
運(yùn)行結(jié)果:
批量獲取文件大小、inode值
文件儲(chǔ)存在硬盤上,硬盤的最小存儲(chǔ)單位叫做"扇區(qū)",每個(gè)扇區(qū)儲(chǔ)存512字節(jié)。
操作系統(tǒng)讀取硬盤的時(shí)候,不會(huì)一個(gè)個(gè)扇區(qū)地讀取,這樣效率太低,而是一次性連續(xù)讀取多個(gè)扇區(qū),即一次性讀取一個(gè)"塊"(block)。這種由多個(gè)扇區(qū)組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續(xù)八個(gè) sector組成一個(gè) block。
文件數(shù)據(jù)都儲(chǔ)存在"塊"中,那么很顯然,我們還必須找到一個(gè)地方儲(chǔ)存文件的元信息,比如文件的創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等等。這種儲(chǔ)存文件元信息的區(qū)域就叫做inode,中文譯名為"索引節(jié)點(diǎn)"。
#!/bin/bash
if [ ! -n "$1" ]
then
echo "請(qǐng)帶上要查詢目錄的絕對(duì)路徑"
exit 1
fi
#定義全局變量存放首層路徑
first_path=$1
#獲取文件函數(shù)
function getfile(){
#進(jìn)入目錄
cd "$1"
for item_path in *
do
#排除目錄為空的情況
if [ "${item_path}" != "*" ]
then
#拼接成絕對(duì)路徑
path=$1"/"${item_path}
#判斷是不是目錄,是的話調(diào)用方法遍歷獲取目錄下的文件
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
}
#打印標(biāo)題
echo "Inode Size FileName"
#調(diào)用函數(shù)
getfile ${first_path}
運(yùn)行結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-698214.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-698214.html
到了這里,關(guān)于shell腳本-批量獲取目錄下所有文件的md5值、大小、inode值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!