Mit find Dateien suchen, die größer als 1MByte sind

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Mit find Dateien suchen, die größer als 1MByte sind

Beitrag von Duff » 17.03.2007 13:14:59

Hallo,

stehe gerade auf dem Schlauch.

Ich möchte alle Dateien finden, die größer als eine bestimmte Dateigröße sind.
Verstehe aber nicht genau, wie ich das mit find anstellen muss.

Finde bisher nur Dateien, die eine bestimmte Größe haben und nicht auch noch die, die sowieso größer sind.

Code: Alles auswählen

daniel@daniel-laptop:~$ find . -size 1024k -exec du -h {} \;
1,1M    ./moneyplex/rup/Bankbase.rdb

Schonmal danke für eure hilfen...
Zuletzt geändert von Duff am 17.03.2007 19:42:15, insgesamt 2-mal geändert.
Oh, yeah!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 17.03.2007 13:19:45

-size +1024k
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 17.03.2007 13:23:12

Danke, so war das noch mal.

Mit + was größer ist und mit - was kleiner ist.

Sorry, aber mir viel das mit dem + und - gerade nicht mehr ein und aus der Manpage war mir das irgendwie auch nicht so verständlich.
Oh, yeah!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 17.03.2007 13:29:12

Brauchst dich doch nicht entschuldigen 8)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 17.03.2007 13:47:14

Stehe aber nun schon wieder vor dem nächsten Problem.
Möchte mir die Ausgabe anhand der Größe sortieren lassen.
6MB
12MB
1GB
...

Bekomme aber nur sowas hier hin:

Code: Alles auswählen

daniel@daniel-laptop:~/scripts$ find /home/daniel -size +61440k -exec du -h {} \;|sort -b -n
6,9G    /home/daniel/backup_111206.tar
63M     /home/daniel/documents/Linksys WRT54G/OpenWRT/SIP und WRT.rtf
69M     /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1403.AVI
71M     /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1377.AVI
91M     /home/daniel/.evolution/mail/local/spam
99M     /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1302.AVI
104M    /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar
104M    /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz
104M    /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz.old
105M    /home/daniel/.evolution/mail/local/Inbox
108M    /home/daniel/downloads/openoffice-2.0.0.deb
121M    /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1456.AVI
122M    /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1407.AVI
122M    /home/daniel/downloads/allnet/all6500_2.1.03.2_GPL.tar.tar
142M    /home/daniel/downloads/allnet/ALL6500_GPL/arm-linux-tools-20031127.tar.gz
186M    /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1398.AVI
212M    /home/daniel/downloads/allnet/ALL6500_GPL_1.0.3o.zip
365M    /home/daniel/bilder/karneval_2007/peter.h_01/CIMG1570.AVI
703M    /home/daniel/downloads/kanotix/KANOTIX-2006-01-RC4.iso
Oh, yeah!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 17.03.2007 13:57:16

du -B M

solltest du nehmen.. dann macht er alles in MegaByte
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 17.03.2007 14:30:46

Ok, so geht's

Code: Alles auswählen

find /home/daniel -size +61440k -exec du -m {} \;|sort -b -g
Aber kann ich mit sort auch die Dateien nach GByte und MByte sortieren lassen, wie ich es vorher wollte?
Also mit du -h, wo ja immer das angezeit wird, was am besten lesbar ist.
Oh, yeah!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 17.03.2007 14:41:36

nicht mit "du" und "sort".. wie sollte "sort" denn wissen was da ausgegeben wird?

bzw. dü könntest vielleicht noch was testen, indem du per "sed" oder "cut" ein Leerzeichen zws. Zahl und "M" bzw. "G" packst, dann das ganze nach Zahlen sortierst und das dann nur auf das Feld in dem "M" bzw. "G" steht rückwärts sortierst...
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 17.03.2007 15:57:35

Verstehe zwar, was du meinst, aber bekomme es mit einer 2ten sort-Anweisung, die nur auf die Buchstaben schauen soll (-k2?), nicht hin.

Habe dass hier bisher:

Code: Alles auswählen

daniel@daniel-laptop:~/scripts$ find /home/daniel -size +100000k -exec du -h {} \; |sed -e 's/\(^[0-9,]*\)\([A-Z]\)\(.*\)$/\1 \2\t\3/g'|sort -b -g
6,9 G           /home/daniel/backup_111206.tar
99 M            /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1302.AVI
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz.old
105 M           /home/daniel/.evolution/mail/local/Inbox
108 M           /home/daniel/downloads/openoffice-2.0.0.deb
121 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1456.AVI
122 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1407.AVI
122 M           /home/daniel/downloads/allnet/all6500_2.1.03.2_GPL.tar.tar
142 M           /home/daniel/downloads/allnet/ALL6500_GPL/arm-linux-tools-20031127.tar.gz
186 M           /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1398.AVI
212 M           /home/daniel/downloads/allnet/ALL6500_GPL_1.0.3o.zip
365 M           /home/daniel/bilder/karneval_2007/peter.h_01/CIMG1570.AVI
703 M           /home/daniel/downloads/kanotix/KANOTIX-2006-01-RC4.iso
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 21.03.2007 13:04:57

Noch jemand ne Idee?
Oh, yeah!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 21.03.2007 13:21:15

vielleicht "-k 2" und nicht "-k2" ? was kommt denn raus?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 21.03.2007 18:41:36

Es ist wohl egal, ob ich -k2 oder -k 2 schreibe.

Beides ordnet zwar nach einem erneuten | sort die 2. Spalte, aber bringt mir dann die 1. Spalte wieder durcheinander.

Code: Alles auswählen

daniel@daniel-laptop:~$ find /home/daniel -size +100000k -exec du -h {} \;|sed -e 's/\(^[0-9,]*\)\([A-Z]\)\(.*\)$/\1 \2\t\3/g'|sort -b -g|sort -k 2
6,9 G           /home/daniel/backup_111206.tar
365 M           /home/daniel/bilder/karneval_2007/peter.h_01/CIMG1570.AVI
122 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1407.AVI
121 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1456.AVI
99 M            /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1302.AVI
186 M           /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1398.AVI
122 M           /home/daniel/downloads/allnet/all6500_2.1.03.2_GPL.tar.tar
212 M           /home/daniel/downloads/allnet/ALL6500_GPL_1.0.3o.zip
142 M           /home/daniel/downloads/allnet/ALL6500_GPL/arm-linux-tools-20031127.tar.gz
703 M           /home/daniel/downloads/kanotix/KANOTIX-2006-01-RC4.iso
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz.old
108 M           /home/daniel/downloads/openoffice-2.0.0.deb
105 M           /home/daniel/.evolution/mail/local/Inbox
daniel@daniel-laptop:~$ find /home/daniel -size +100000k -exec du -h {} \;|sed -e 's/\(^[0-9,]*\)\([A-Z]\)\(.*\)$/\1 \2\t\3/g'|sort -b -g -k2
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz.old
105 M           /home/daniel/.evolution/mail/local/Inbox
108 M           /home/daniel/downloads/openoffice-2.0.0.deb
121 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1456.AVI
122 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1407.AVI
122 M           /home/daniel/downloads/allnet/all6500_2.1.03.2_GPL.tar.tar
142 M           /home/daniel/downloads/allnet/ALL6500_GPL/arm-linux-tools-20031127.tar.gz
186 M           /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1398.AVI
212 M           /home/daniel/downloads/allnet/ALL6500_GPL_1.0.3o.zip
365 M           /home/daniel/bilder/karneval_2007/peter.h_01/CIMG1570.AVI
6,9 G           /home/daniel/backup_111206.tar
703 M           /home/daniel/downloads/kanotix/KANOTIX-2006-01-RC4.iso
99 M            /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1302.AVI
Wenn ich alles in ein Kommando packe, wird zwar Sortiert, aber auch mal wieder nicht so, wie ich es gerne hätte.
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 21.03.2007 18:44:38

Habe gerade noch was rausgefunden.

So wird auf jeden Fall schon mal "fast" richtig sortiert:

Code: Alles auswählen

daniel@daniel-laptop:~$ find /home/daniel -size +100000k -exec du -h {} \;|sed -e 's/\(^[0-9,]*\)\([A-Z]\)\(.*\)$/\1 \2\t\3/g'|sort -b -g -k1 -k2
6,9 G           /home/daniel/backup_111206.tar
99 M            /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1302.AVI
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz
104 M           /home/daniel/downloads/OOo_2.0.0_LinuxIntel_install_de.tar.gz.old
105 M           /home/daniel/.evolution/mail/local/Inbox
108 M           /home/daniel/downloads/openoffice-2.0.0.deb
121 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1456.AVI
122 M           /home/daniel/bilder/karneval_2007/peter.h_02/CIMG1407.AVI
122 M           /home/daniel/downloads/allnet/all6500_2.1.03.2_GPL.tar.tar
142 M           /home/daniel/downloads/allnet/ALL6500_GPL/arm-linux-tools-20031127.tar.gz
186 M           /home/daniel/bilder/karneval_2007/peter.h_03/CIMG1398.AVI
212 M           /home/daniel/downloads/allnet/ALL6500_GPL_1.0.3o.zip
365 M           /home/daniel/bilder/karneval_2007/peter.h_01/CIMG1570.AVI
703 M           /home/daniel/downloads/kanotix/KANOTIX-2006-01-RC4.iso
Wenn man dass ganze nun noch so sortieren könnte, dass zuerst der Größe nach in MByte geordnet wird und dann anschließend der Größe nach in GByte. Möglich???

Also,

100 M
103 M
302 M
3 G
3,2 G
8 G
...
Oh, yeah!

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 01.04.2007 15:41:57

Wäre es nicht langsam mal an der Zeit eine Skriptsprache zu bemühen? Oder geht es darum, das möglichst mit Shell-Tools zu lösen?
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 02.04.2007 08:53:32

Leonidas hat geschrieben: Wäre es nicht langsam mal an der Zeit eine Skriptsprache zu bemühen? Oder geht es darum, das möglichst mit Shell-Tools zu lösen?
Wie meinst du das?
Sollte man eher ein Perl-Skript oder so was in die Richtung dafür schreiben, oder was meinst du?
Oh, yeah!

Benutzeravatar
uljanow
Beiträge: 529
Registriert: 20.09.2005 21:14:00

Beitrag von uljanow » 02.04.2007 09:14:55

Ein

Code: Alles auswählen

find . -size +100M -exec ls -sh {} \; | sort -n
ist viel kürzer und hat das gleiche resultat. Man könnte ja die -h option weglassen und hat alles in richtiger Reihenfolge. :wink:

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 02.04.2007 14:52:32

Duff hat geschrieben:Sollte man eher ein Perl-Skript oder so was in die Richtung dafür schreiben, oder was meinst du?
Ja, Perl oder Python - ist eigentlich egal:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import os

big_files = list()
for dirpath, dirnames, filenames in os.walk('.'):
    for filename in filenames:
        filepath = os.path.join(dirpath, filename)
        bytes = os.stat(filepath).st_size
        if bytes / 1024 >= 1:
            big_files.append((bytes, filepath))

for bytes, filepath in reversed(sorted(big_files)):
    print "%dkB\t%s" % (bytes / 1024, filepath)
Ausgabe - sortiert vom größten zum kleinsten, nur Dateien größer als ein Kilobyte:

Code: Alles auswählen

6313kB  ./quarks.wav
3579kB  ./py25/python2.5_2.5-1~bpo.1_sparc.deb
1900kB  ./py25/python2.5-dev_2.5-1~bpo.1_sparc.deb
,,,
So einen Code finde ich etwas leserlicher und einfacher zu modifizieren als den Shell-Einzeiler.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 02.04.2007 18:16:03

uljanow hat geschrieben: Ein

Code: Alles auswählen

find . -size +100M -exec ls -sh {} \; | sort -n
ist viel kürzer und hat das gleiche resultat. Man könnte ja die -h option weglassen und hat alles in richtiger Reihenfolge. Wink
Ja, da hast du natürlich recht. Mein Befehl:

Code: Alles auswählen

find /home/daniel -size +100000k -exec du -h {} \;|sed -e 's/\(^[0-9,]*\)\([A-Z]\)\(.*\)$/\1 \2\t\3/g'|sort -b -g -k1 -k2 
sieht da schon ein wenig komplizierter aus, ist aber auch nur das gleiche, was du gepostet hast.

@Leonidas: Danke für dein Skript, aber python kann ich leider nicht. Ich hatte mir nur überlegt, warum soll ich mir ein perl-Skript schreiben, wenn ich dass ganze auch (fast) mit einem Shelleinzeiler abdecken kann.

Das war meine Überlegung.
Oh, yeah!

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 03.04.2007 09:18:56

Duff hat geschrieben:@Leonidas: Danke für dein Skript, aber python kann ich leider nicht. Ich hatte mir nur überlegt, warum soll ich mir ein perl-Skript schreiben, wenn ich dass ganze auch (fast) mit einem Shelleinzeiler abdecken kann.
Weil es einfacher erweiterbar ist und einfacher zu verstehen ist. Die Zeit die ich brauche so einen Shelleinzeiler funktionsfähig zu bekommen, habe ich mit einem Python-Skript dreimal reingeholt.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 03.04.2007 11:11:36

Leonidas hat geschrieben: Weil es einfacher erweiterbar ist und einfacher zu verstehen ist. Die Zeit die ich brauche so einen Shelleinzeiler funktionsfähig zu bekommen, habe ich mit einem Python-Skript dreimal reingeholt.
Ok, aber in perl hätte ich da schon wieder ein wenig überlegen müssen und mir auch mal genauer das Modul find anschauen müssen.

Python kann ich leider nicht.
Oh, yeah!

Antworten