


Linux shell腳本區別內容相同的文件
以前使用'網絡蜘蛛'抓取了不少文件.但后來發現這些文件中有很多是內容完全相同的,如何只保留一份內容相同的文件而把其它相同的去除掉哪?我使用了linux shell腳本處理這個問題:
for file in * #遍歷文件
do
if ! [ -f "$file" ] #如果文件存在的話,因為有的文件可能被剔除了.
then
echo $file" not exist"
else
for i in *
do
if [ "$file" != "$i" ] #如果文件名不同
then
if cmp -s $file $i
then
mv $i ../same/
fi
fi
done
mv $file ../unique/
fi
done
我一共處理4000多個文件,運行的挺慢的,用了1天零2夜才處理完,我汗,竟剔出了近2000,我再汗.
為了提高效率,后來考慮只對文件大小相同的文件才進行比較.腳本如下:
for file in * #遍歷文件
do
if ! [ -f "$file" ] #如果文件存在的話,因為有的文件可能被剔除了.
then
echo $file" not exist"
else
leno=`ls -l $file | awk '{print $5}'` #使用ls和awk提出文件大小
for i in *
do
leni=`ls -l $i | awk '{print $5}'`
if [ "$file" != "$i" -a "$leno" = "$leni" ] #如果文件名不同,并且文件大小相同
then
if cmp -s $file $i
then
mv $i ../same/
fi
fi
done
mv $file ../unique/
fi
done
找了一小部分文件測試了一下,速度竟比第一個還慢,可能是頻繁調用ls和awk的問題.
先到此,如果有更好的辦法,再作補充.
關鍵字:腳本、文件、shell
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解