以前使用'網路蜘蛛'抓取了不少檔案.但後來發現這些檔案中有很多是內容完全相同的,如何只保留乙份內容相同的檔案而把其它相同的去除掉哪?我使用了linux shell指令碼處理這個問題:
for file in * #遍歷檔案
doif ! [ -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/
fifi
done
mv $file ../unique/
fidone
我一共處理4000多個檔案,執行的挺慢的,用了1天零2夜才處理完,我汗,竟剔出了近2000,我再汗.
為了提高效率,後來考慮只對檔案大小相同的檔案才進行比較.指令碼如下:
for file in * #遍歷檔案
doif ! [ -f "$file" ] #如果檔案存在的話,因為有的檔案可能被剔除了.
then
echo $file" not exist"
else
leno=`ls -l $file | awk ''` #使用ls和awk提出檔案大小
for i in *
doleni=`ls -l $i | awk ''`
if [ "$file" != "$i" -a "$leno" = "$leni" ] #如果檔名不同,並且檔案大小相同
then
if cmp -s $file $i
then
mv $i ../same/
fifi
done
mv $file ../unique/
fidone
找了一小部分檔案測試了一下,速度竟比第乙個還慢,可能是頻繁呼叫ls和awk的問題.
先到此,如果有更好的辦法,再作補充.
源自:賀計文
(個人**
)
Linux shell指令碼區別內容相同的檔案
以前使用 網路蜘蛛 抓取了不少檔案.但後來發現這些檔案中有很多是內容完全相同的,如何只保留乙份內容相同的檔案而把其它相同的去除掉哪?我使用了linux shell指令碼處理這個問題 for file in 遍歷檔案 doif f file 如果檔案存在的話,因為有的檔案可能被剔除了.then ech...
Makefile與shell指令碼區別
在makefile可以呼叫shell指令碼,但是makefile和shell指令碼是不同的。本文試著歸納一下makefile和shell指令碼的不同。1 shell中所有引用以 打頭的變數其後要加 而在makefile中的變數是以 打頭的後加 例項如下 makefile path data subp...
紅樓版本 區別
紅樓夢 在流傳過程中逐步形成了眾多版本,大致可分為兩個系統 庚辰本是目前所見存脂批最多的抄本,這些批語有著重要的美學和史料價值。這個本子可能是作者生前最後一次改定的本子,也最接近作者手稿。所以,庚辰本在 紅樓夢 一書的流行及研究過程中扮演了乙個重要的角色,自有它的特殊地位。該原本八十回,中缺六十 四...