Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
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!
-
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
-
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!
-
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
-
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!
-
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
-
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!
-
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...
-
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!
-
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!
-
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?
-
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!
-
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!
-
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.
-
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!
-
uljanow
- Beiträge: 529
- Registriert: 20.09.2005 21:14:00
Beitrag
von uljanow » 02.04.2007 09:14:55
Ein
ist viel kürzer und hat das gleiche resultat. Man könnte ja die -h option weglassen und hat alles in richtiger Reihenfolge.
-
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.
-
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
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!
-
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.
-
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!