Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

30.01.2007, 10:13

Operationen auf großen Verzeichnissen

Hallo!

Ich habe das Problem, dass ich Unix Tools auf Dateien in einem sehr großen Verzeichnis anwenden möchte (ca. 9000 Dateien im Verzeichnis). Leider sind für viele Tools die Argumentlisten zu groß.
Wie kann ich dieses Problem umgehen? Bisweilen habe ich von "xargs" gehört; werde aus den Tutorials, die ich im Netz finde, nicht schlau. Kann mir jemand sagen, wie ich z.B. mit "xargs" den Inhalt eines ganzen Verzeichnisses löschen kann (wenn "rm -fr *" nicht funktioniert)?

Vielen Dank im Voraus!

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

2

30.01.2007, 10:48

Du brauchst xargs dazu nicht. Du musst dem Programm nur mitteilen, dass der Optionsbereich abgeschlossen ist. Das geht glaub ich mit --

Quellcode

1
rm -rf -- *
localhost,
sweet localhost

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

3

30.01.2007, 11:06

Zitat

Original von Imhotep
Du brauchst xargs dazu nicht. Du musst dem Programm nur mitteilen, dass der Optionsbereich abgeschlossen ist. Das geht glaub ich mit --

Quellcode

1
rm -rf -- *


Nein. Tut es nicht.

@miwieg
Lies die Manpage von xargs oder such bei Google.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

4

30.01.2007, 11:18

Steht aber so in der Man-Page von Bash.

Zitat

A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --.
localhost,
sweet localhost

renegade

macht was er will

  • »renegade« ist männlich

Beiträge: 2 842

Wohnort: Ostfriesland

Beruf: root

  • Nachricht senden

5

30.01.2007, 11:39

RE: Operationen auf großen Verzeichnissen

Zitat

Original von miwieg
Bisweilen habe ich von "xargs" gehört; werde aus den Tutorials, die ich im Netz finde, nicht schlau


Das ist echt ne Kunst! Der erste Treffer bei google ist so simpel erklärt, daß sogar mein Hund jetzt weiß was er mit xargs wie machen kann!
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

6

30.01.2007, 11:42

Lies was da steht. Sinnbildlich heisst es "Die '--' sorgen dafuer, dass nachfolgende Optionen nicht weiter abgearbeitet werden.

Quellcode

1
2
3
4
[dope@painless:~ :) ]% touch -foobar   
touch: invalid option -- o
Try `touch --help' for more information.
[dope@painless:~ :( ]% touch -- -foobar

Geloescht wird die Datei dann mit "rm -- -foobar" oder "rm ./-foobar".
Ein "argument list too long" kannst Du damit nicht umgehen, da das eine Begrenzung im Kernel selbst ist.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

7

30.01.2007, 18:24

Zitat

Das ist echt ne Kunst! Der erste Treffer bei google ist so simpel erklärt, daß sogar mein Hund jetzt weiß was er mit xargs wie machen kann!


Wow!!!! Koenntest Du mir Deinen Hund mal leihen? Ich haette ein paar kleinere Jobs fuer den... :)

Wenn es mit Gewalt nicht geht, geht es mit mehr Gewalt!

Mach' einfach eine Schleife ....

for bla in `ls`
do
rm $bla
done

/bernd
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

8

30.01.2007, 18:31

Eine Schleife ist die langsamste und unsicherste Methode und so schon gar nicht. Die Schleife funktioniert naemlich nicht, wenn ein Dateiname Leerzeichen/Newlines enthaelt oder wenn "ls" ein Alias wie ls='/bin/ls --color=always' ist.
Das ist keine "Gewalt", sondern Bloedsinn.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

9

30.01.2007, 19:34

Zitat

Das ist keine "Gewalt", sondern Bloedsinn.


Mh. Die Fehlermeldung bei Whitespaces ist:
Datei nicht verhanden. Das bezeichne ich nicht, als "nicht funktionieren". Wetten dass die paar Dateien, die uebrigbleiben, den Kernel nicht ueberlasten.... ...und dann auf anderem Weg loeschbar sind? Ich wuerde ein Fass fraenkisches Bier setzen, damit Du mal richtiges Bier schmeckst.

/bernd
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

10

30.01.2007, 19:38

Zitat

Original von bonsai

Zitat

Das ist keine "Gewalt", sondern Bloedsinn.


Mh. Die Fehlermeldung bei Whitespaces ist:
Datei nicht verhanden. Das bezeichne ich nicht, als "nicht funktionieren". Wetten dass die paar Dateien, die uebrigbleiben, den Kernel nicht ueberlasten.... ...und dann auf anderem Weg loeschbar sind?


Ist das Veranlagung oder wieso zitierst Du staendig sinnbefreit? Ich habe erklaert wieso Deine Loesung Bloedsinn - also unbrauchbar - ist. Wenn Du mit gerechtfertiger Kritik nicht klarkommst, ist das nicht mein Problem.

Zitat

Ich wuerde ein Fass fraenkisches Bier setzen, damit Du mal richtiges Bier schmeckst.


Ich trinke keinen Alkohol mehr.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

11

31.01.2007, 10:31

Zitat

Ist das Veranlagung oder wieso zitierst Du staendig sinnbefreit? Ich habe erklaert wieso Deine Loesung Bloedsinn - also unbrauchbar - ist. Wenn Du mit gerechtfertiger Kritik nicht klarkommst, ist das nicht mein Problem.


Nachdem ich Dich zitiere, mag' es "sinnbefreit" sein.

Zitat

Ich trinke keinen Alkohol mehr.


Dies erklaert, dass Du so verbittert bist.
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

12

31.01.2007, 12:14

ohhh man.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

13

31.01.2007, 16:10

Zitat

Original von bonsai

Zitat

Ist das Veranlagung oder wieso zitierst Du staendig sinnbefreit? Ich habe erklaert wieso Deine Loesung Bloedsinn - also unbrauchbar - ist. Wenn Du mit gerechtfertiger Kritik nicht klarkommst, ist das nicht mein Problem.


Nachdem ich Dich zitiere, mag' es "sinnbefreit" sein.

Zitat

Ich trinke keinen Alkohol mehr.


Dies erklaert, dass Du so verbittert bist.


Du bist einfach nur inkompetent und laecherlich.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

renegade

macht was er will

  • »renegade« ist männlich

Beiträge: 2 842

Wohnort: Ostfriesland

Beruf: root

  • Nachricht senden

14

31.01.2007, 17:27

Ist doch immer wieder "schön" zu sehen wie wirklich sinnvolle Threads mit einer spitzen Lösung durch inkompetentes gestammel einfach kaputt gemacht werden!
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

15

01.02.2007, 00:26

RE: Operationen auf großen Verzeichnissen

Zitat

Original von miwieg
Inhalt eines ganzen Verzeichnisses löschen kann (wenn "rm -fr *" nicht funktioniert)?

Eine Alternative wäre noch das Verzeichnis ansich zu löschen und neu zu erstellen, allerdings müsstest du dir dazu die Zugriffsrechte und Benutzer-/Gruppenzugehörigkeit merken merken können
localhost,
sweet localhost

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Imhotep« (01.02.2007, 00:27)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

16

01.02.2007, 18:19

RE: Operationen auf großen Verzeichnissen

noch interessanter wäre, ob miwieg es denn mit xargs nun geschafft hat.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

17

03.02.2007, 22:31

Viel interessanter wäre die Frage warum er noch nicht den find-Trick verwendet, wenn er gegen argument too long kämpft - oder regex? Oder, oder, oder - es gibt sicher 100+1 Wege das hinzubekommen... aber es liest ja keiner mehr manpages und Manuals...
### Better dead than doze ### Kluge Leute wissen, wann sie sich dumm stellen müssen ###

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

18

04.02.2007, 03:01

regex(7) hilft nichts gegen ein "argument list too long" und xargs(1) hilft auch nur in Verbindung mit find(1). Also mit find(1) die Dateien anzeigen lassen, an xargs(1) pipe'n und rm(1) als Argument fuer xargs(1) verwenden.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

19

07.02.2007, 16:04

Zitat

Original von strcat
regex(7) hilft nichts gegen ein "argument list too long"


Sorry mein Fehler... aber regex= regular expressions und die sind sehr nützlich um Argumentlisten in kleine Portionen zu teilen... und wenn Du "um die Ecke" denkst wirst du sogar shell-Scripte basteln, die dynamisch die regex-Argumente zur Laufzeit verändern (z.B. simple for Schleife)... aber vielleicht bin ich ja altmodisch.
### Better dead than doze ### Kluge Leute wissen, wann sie sich dumm stellen müssen ###

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

20

07.02.2007, 17:20

Zitat

Original von LiWiz
[..] aber vielleicht bin ich ja altmodisch.


Altmodisch ist das nicht, aber umstaendlich. Ein Einzeiler ist fuer "Anfaenger" einfacher zu verstehen als ein Script und es erfuellt (in dem Fall) den gleichen Zweck.
Den "Fehler", den die meisten machen, wenn sie Scripte schreiben bzw. posten, ist, dass sie die Kurzform der Optionen angeben. Ein

Quellcode

1
rsync -Cavz . jehova:backup
versteht kaum jemand; meistens blickt man selbst nach einiger Zeit nicht mehr durch. Dann lieber ein

Quellcode

1
rsync --cvs-exclude --archive --verbose --compress jehove:backup

Das ist zwar mehr zu schreiben, allerdings erkennt man auch nach laengerer Zeit noch was die Zeile macht. Gute Shells vervollstaendigen aber die Optionen der meisten Programme automatisch:

Quellcode

1
2
3
4
5
[dope@painless:~ :) ]% rsync --a<TAB>
option:
--address  -- bind to the specified address
--append   -- append data onto shorter files
--archive  -- archive mode; same as -rlptgoD (no -H)
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

Thema bewerten