Linux shell脚本区别内容相同的文件.

原创 2006年05月25日 09:44:00
以前使用'网络蜘蛛'抓取了不少文件.但后来发现这些文件中有很多是内容完全相同的,如何只保留一份内容相同的文件而把其它相同的去除掉哪?我使用了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的问题.
先到此,如果有更好的办法,再作补充.

Linux shell脚本区别内容相同的文件

以前使用网络蜘蛛抓取了不少文件.但后来发现这些文件中有很多是内容完全相同的,如何只保留一份内容相同的文件而把其它相同的去除掉哪?我使用了linux shell脚本处理这个问题:for file in ...
  • ice1976
  • ice1976
  • 2008年10月31日 10:44
  • 1073

shell 脚本替换文件中某个字符串

1、将当前目录下包含jack串的文件中,jack字符串替换为tom sed -i "s/jack/tom/g" `grep "jack" -rl ./` 2、将某个文件中的jack字符串替换为...
  • l0605020112
  • l0605020112
  • 2014年04月24日 19:17
  • 1636

Shell脚本基础7-如何在一个文件尾部写入内容

本文继续利用if控制语句,我们来实现一个简单的脚本,这个脚本的功能是:先判断文件是否是常规文件,如果存在,继续判断文件是否有写的权限,如果有写的权限,然后需要接受键盘的输入,并把输入的字符保存到文件的...
  • u011541946
  • u011541946
  • 2017年05月21日 21:58
  • 1770

Linux文件合并去除重复内容

第一:两个文件的交集,并集 前提条件:每个文件中不得有重复行 1. 取出两个文件的并集(重复的行只保留一份) 2. 取出两个文件的交集(只留下同时存在于两个文件中的文件) 3. 删除交集,留下...
  • yu1013708633
  • yu1013708633
  • 2016年08月05日 21:42
  • 790

Linux中使用shell脚本向文件中写数据

以前没写过shell脚本,懂得一些Linux的操作命令。看了网上一些shell脚本的方法。总结,发现用脚本将一些数据写入文件比较实用。遂举例如下: #!/bin/bash #Test echo "Th...
  • wxywxywxy110
  • wxywxywxy110
  • 2016年09月20日 19:22
  • 520

利用Shell脚本进行文件内容去重

最近在处理文件的时候,遇到文件内容存在大量重复项的情况,很显然需要文件内容去重。因为使用的是Python,本来想要找找Python文件内容去重的方法,但是看到的基本利用Set或者List等方法(还没来...
  • bnxf00000
  • bnxf00000
  • 2015年08月15日 10:19
  • 1163

【Linux】Shell - 脚本练习 - 获取文件某行的内容

# 输出文件的第3行内容 sed -n "3p" filename   awk 'NR==3 {print $0}' testfile
  • xunmengpiaoyun
  • xunmengpiaoyun
  • 2017年09月20日 16:18
  • 136

Shell 命令行求两个文件每行对比的相同内容

Shell 命令行求两个文件每行对比的相同内容遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析。而我手上有不少域名,其中很多都是没有实名的。但我不知道哪些实名了,哪些没...
  • FungLeo
  • FungLeo
  • 2017年08月01日 14:05
  • 2678

SHELL脚本读文件

先说一下,我用的是这个: 以下是sh文件内容********************************************#!/bin/shFILENAME="$1"cat $FILENAM...
  • herrapfel
  • herrapfel
  • 2011年11月18日 16:17
  • 8542

Linux系统下比较两个文件并删除相同部分

方法一:   comm -23 file1 file2   方法二:         cat file1 |grep -v -f file2      ----此方法可以   grep -...
  • junmuzi
  • junmuzi
  • 2012年11月29日 21:22
  • 1356
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux shell脚本区别内容相同的文件.
举报原因:
原因补充:

(最多只允许输入30个字)