immer wieder: Argument list too long [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
wimpf
Beiträge: 79
Registriert: 10.07.2002 12:38:19
Wohnort: Zürich

immer wieder: Argument list too long [gelöst]

Beitrag von wimpf » 16.05.2006 13:08:46

Hallo,

ich habe Verzeichnisse hier mit mehreren Tausend (11827) Dateien inhalt. Wenn ich versuche ein cp *.mp4 (ca. 3500 Dateien) abzusetzten erhalte ich dann leider ein

Code: Alles auswählen

Argument list too long
Habt Ihr eine Idee, wie ich das umgehen kann? Ich kann natürlich in Blöcken kopieren

Code: Alles auswählen

cp 1*.mp4 /ZIEL/ && cp 2*.mp4/ZIEL/
oder die Dateien vorab organisieren, das ist aber nicht das, was ich gerne machen möchte.

Danke euch,
Wimpf
Zuletzt geändert von wimpf am 16.05.2006 13:53:04, insgesamt 1-mal geändert.

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

Beitrag von Savar » 16.05.2006 13:12:59

Code: Alles auswählen

find . -name "*.mp4" -exec cp {} /ziel/pfad \;
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

wimpf
Beiträge: 79
Registriert: 10.07.2002 12:38:19
Wohnort: Zürich

Beitrag von wimpf » 16.05.2006 13:24:34

Danke Savar,

das funktioniert natürlich. Aber gibt es denn keine Möglichkeit diese Barriere (im Moment betrachte ich das als eine) grundsätzlich nach oben zu verlagern? Ich würde das schon gerne grundsätzlich verstehen.

Danke,
wimpf

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

Beitrag von Savar » 16.05.2006 13:26:29

keine Ahnung ob die Bash das zulässt.. es ist eine Begrenzung die die Bash macht.. wenn du also das "vergrößern" möchtest, müsstest du mal nach "argument list too small bash" bei Google suchen oder so..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

init 0
Beiträge: 673
Registriert: 21.10.2003 19:40:28

Beitrag von init 0 » 16.05.2006 13:33:46

xargs könnte dir auch weiterhelfen. Du bist aber schon mit find nicht zufrieden.
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.

wimpf
Beiträge: 79
Registriert: 10.07.2002 12:38:19
Wohnort: Zürich

Beitrag von wimpf » 16.05.2006 13:50:37

Danke euch.

Beim Kompilieren des Kernels kann man den Parameter

Code: Alles auswählen

/*
 * MAX_ARG_PAGES defines the number of pages allocated for   arguments
 * and envelope for the new program. 32 should suffice, this gives
 * a maximum env+arg of 128kB w/4KB pages!
 */
#define MAX_ARG_PAGES 32
erhöhen und bekommt so mehr Speicher für die Argument list. Nachzulesen ist das hier: http://www.linuxjournal.com/article/6060

/wimpf

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 16.05.2006 14:46:52

Das bezieht sich dann aber auf die Kernelkommandozeile

init 0
Beiträge: 673
Registriert: 21.10.2003 19:40:28

Beitrag von init 0 » 16.05.2006 14:57:18

Die Frage ist natürlich auf welchen Wert man das stellen soll?
Gneaugenommen ist alles was man da einstellt für irgendeine Anwendung zu wenig und für den Rest zu viel. Obwohl ich recht schnell bin beim Kernel neu compilieren. Das wäre nicht einmal für mich ein Grund.
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 16.05.2006 15:53:23

Nochmal: Die Bash dürfte es einen Dreck interessieren, wie lang die Kernelkommandozeile sein darf.

Antworten