Bash – azonos fájlok keresése

Kezdőlap Fórumok Programozás Bash – azonos fájlok keresése

10 bejegyzés megtekintése - 1-10 / 27
  • Szerző
    Bejegyzés
  • #2140432
    pointux
    Felhasználó

      Tehát az azonos file-okat törölni akarod. (Ill. egyet megtartani.)
      Én azt tenném, hogy minden file-nál két különböző módszerrel kiszámolnék egy ellenőrző összeget és listát készítenék egy file-ba. (De igen nagy valószínűséggel egy file-méret + egy ellenőrző összeg is elég.)

      Így nézne ki:
      elérési_út/filenév méret md5

      Ezek után csak végig kell futtatni a sorokon egy scriptet, hogy, ha a méret és az md5 azonos, akkor akkor a másodikat törölje. (Vagy a 3 adat külön sorban. Tán még egyszerűbb kezelni.)

      man md5sum

      Én így csinálnám. (Persze az ellenőrző összeg számításának ideje a méret meg a file-ok számától erősen függ.)

      #2140433
      pointux
      Felhasználó

        Tehát az azonos file-okat törölni akarod. (Ill. egyet megtartani.)
        Én azt tenném, hogy minden file-nál két különböző módszerrel kiszámolnék egy ellenőrző összeget és listát készítenék egy file-ba. (De igen nagy valószínűséggel egy file-méret + egy ellenőrző összeg is elég.)

        Így nézne ki:
        elérési_út/filenév méret md5

        Ezek után csak végig kell futtatni a sorokon egy scriptet, hogy, ha a méret és az md5 azonos, akkor akkor a másodikat törölje. (Vagy a 3 adat külön sorban. Tán még egyszerűbb kezelni.)

        man md5sum

        Én így csinálnám. (Persze az ellenőrző összeg számításának ideje a méret meg a file-ok számától erősen függ.)

        #2140434
        ELaci
        Felhasználó

          Merhogy nekem is szükség volt rá, összebogarásztam egy ilyet:

          Code:
          find . -type f -name ‘*’ -exec md5sum -b ‘{}’ ; |sort |uniq -D -w32 |cut -d”*” -f2

          Ez a fenti bigyó, az azonos md5 -el rendelkező fileokat írja ki az összes alkönyvtárból.

          EL

          Szerk.:
          Ami még fontos: az első megtaláltat nem veszi duplának, ezért azt nem írja ki, tehát az az első példány megmaradhat.

          #2140435
          ELaci
          Felhasználó

            Merhogy nekem is szükség volt rá, összebogarásztam egy ilyet:

            Code:
            find . -type f -name ‘*’ -exec md5sum -b ‘{}’ ; |sort |uniq -D -w32 |cut -d”*” -f2

            Ez a fenti bigyó, az azonos md5 -el rendelkező fileokat írja ki az összes alkönyvtárból.

            EL

            Szerk.:
            Ami még fontos: az első megtaláltat nem veszi duplának, ezért azt nem írja ki, tehát az az első példány megmaradhat.

            #2140436
            tothaa
            Felhasználó

              köszi, így már menni fog.

              #2140437
              tothaa
              Felhasználó

                köszi, így már menni fog.

                #2140438
                ELaci
                Felhasználó

                  Ha már lúd akkor legyen kövér címmel, megcsináltam a duplakeresőt kdialógban.
                  Akinek van KDE, az használhatja, no meg tanulni is lehet belőle, akinek ez eddig ismeretlen volt. 🙂

                  Code:
                  #!/bin/bash
                  # dupla fileokat keres, majd betolti kwrite-ba
                  #

                  dir=`kdialog –title „Dupla file keresés könyvtárban” –getexistingdirectory .`
                  x=$?
                  if test „$x” = „0” ; then
                    list=`mktemp -t -p /tmp`
                    find $dir -type f -name ‘*’ >$list
                    count=`wc -l $list |cut -d” ” -f1`
                    echo „Fileok száma: $count”

                    sumlist=`mktemp -t -p /tmp`
                    ref=`kdialog –progressbar „$count file, md5sum létrehozás…” $count`
                    dcop $ref showCancelButton true

                    for i in `cat $list`; do
                      md5sum -b „$i” >>$sumlist
                      if test „true” == `dcop $ref wasCancelled`; then
                  dcop $ref close
                  rm -f $list $sumlist
                  exit
                      fi
                      inc=$((`dcop $ref progress` + 1))
                      dcop $ref setProgress $inc
                    done
                    dcop $ref close

                    rmlist=`mktemp -t -p /tmp`
                    sort $sumlist |uniq -D -w32 |cut -d”*” -f2 |sort >$rmlist
                    rm -f $list $sumlist

                    if test -s $rmlist ; then
                      kwrite $rmlist &
                    else
                      kdialog –msgbox „Nincs dupla file.”
                      rm -f $rmlist
                    fi
                  fi

                  Azért kiváncsi lennék rá hogy másnál hogy fut?

                  EL

                  Szerk.:
                  Utólag vettem észre hogy a szóközös és egyéb írásjeleket tartalmazó fileneveket rosszul kezeli a program.
                  No, mindegy. Majd még bütykölök rajta.

                  #2140439
                  ELaci
                  Felhasználó

                    Ha már lúd akkor legyen kövér címmel, megcsináltam a duplakeresőt kdialógban.
                    Akinek van KDE, az használhatja, no meg tanulni is lehet belőle, akinek ez eddig ismeretlen volt. 🙂

                    Code:
                    #!/bin/bash
                    # dupla fileokat keres, majd betolti kwrite-ba
                    #

                    dir=`kdialog –title „Dupla file keresés könyvtárban” –getexistingdirectory .`
                    x=$?
                    if test „$x” = „0” ; then
                      list=`mktemp -t -p /tmp`
                      find $dir -type f -name ‘*’ >$list
                      count=`wc -l $list |cut -d” ” -f1`
                      echo „Fileok száma: $count”

                      sumlist=`mktemp -t -p /tmp`
                      ref=`kdialog –progressbar „$count file, md5sum létrehozás…” $count`
                      dcop $ref showCancelButton true

                      for i in `cat $list`; do
                        md5sum -b „$i” >>$sumlist
                        if test „true” == `dcop $ref wasCancelled`; then
                    dcop $ref close
                    rm -f $list $sumlist
                    exit
                        fi
                        inc=$((`dcop $ref progress` + 1))
                        dcop $ref setProgress $inc
                      done
                      dcop $ref close

                      rmlist=`mktemp -t -p /tmp`
                      sort $sumlist |uniq -D -w32 |cut -d”*” -f2 |sort >$rmlist
                      rm -f $list $sumlist

                      if test -s $rmlist ; then
                        kwrite $rmlist &
                      else
                        kdialog –msgbox „Nincs dupla file.”
                        rm -f $rmlist
                      fi
                    fi

                    Azért kiváncsi lennék rá hogy másnál hogy fut?

                    EL

                    Szerk.:
                    Utólag vettem észre hogy a szóközös és egyéb írásjeleket tartalmazó fileneveket rosszul kezeli a program.
                    No, mindegy. Majd még bütykölök rajta.

                    #2140440
                    uzsolt
                    Felhasználó

                      Jobb később, mint még később:
                      https://oss.euedge.com/wiki/UaMainPage

                      ua is a simple command-line tool that finds sets of identical files. The name ua is derived from the Hungarian word ugyanaz meaning the same.

                      #2140441
                      uzsolt
                      Felhasználó

                        Jobb később, mint még később:
                        https://oss.euedge.com/wiki/UaMainPage

                        ua is a simple command-line tool that finds sets of identical files. The name ua is derived from the Hungarian word ugyanaz meaning the same.

                      10 bejegyzés megtekintése - 1-10 / 27
                      • Be kell jelentkezni a hozzászóláshoz.