[BC3] Argument list too long

Pagina: 1
Acties:

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
bash$ chmod o+w *.*
bash: /bin/chmod: Argument list too long

Ik heb het idee dat het commando goed is, maar dat idee zou fout kunnen zijn.

Weet iemand wel wat er precies mis is?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 26 april 2001 15:58 schreef OlafvdSpek het volgende:
bash$ chmod o+w *.*
bash: /bin/chmod: Argument list too long

Ik heb het idee dat het commando goed is, maar dat idee zou fout kunnen zijn.

Weet iemand wel wat er precies mis is?
Het kan zijn dat er een recursieve-link in die dir staat?
Want inderdaad zou het commando goed moeten zijn (chmod o+w "alle bestanden met een . erin" bedoel je neem ik aan?)
[edit]
Effe getest hier, commando syntax is goed. Ik hou het op de recursieve link...

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik bedoelde eigenlijk gewoon alle bestanden. Kan het zijn dat een groot aantal bestanden ook deze foutmelding veroorzaakt? Er staan tussen de 15000 en 20000 bestanden in die directory.

Als er een recursieve link in staat zou ik niet weten hoe dat komt. Het is trouwens toch niet zo dat het commando automatisch ook de sub-directories in gaat?

  • Expander
  • Registratie: Februari 2001
  • Niet online
subdirectories in is met -R, dat doet ie standaard niet d8 ik.. Misschien is het een limit van het programma chmod?

edit:
Alle bestanden is *, *.* is idd alle bestanden met een punt erin.

Expanding the inexpandable


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 26 april 2001 17:50 schreef OlafvdSpek het volgende:
Ik bedoelde eigenlijk gewoon alle bestanden. Kan het zijn dat een groot aantal bestanden ook deze foutmelding veroorzaakt? Er staan tussen de 15000 en 20000 bestanden in die directory.
Zou kunnen zijn dat bash dat wat teveel vindt :)
Doe dan bv chmod o+w a*
etc :)
Als er een recursieve link in staat zou ik niet weten hoe dat komt. Het is trouwens toch niet zo dat het commando automatisch ook de sub-directories in gaat?
Recursieve link bedoel ik mee, er staan twee bestandjes, a wijst naar b en b wijst naar a...
Dat gaat niet chmod/bash niet leuk vinden.

En idd, alle bestanden is * (dus niet *.* das alles met een . erin) subdirs wordt standaard niet ingegaan. Dat is om je tegen jezelf te beschermen denk ik.

  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

eventens recapituleren wat je doet:

bash$ chmod o+w *.*

2 dingetjes:

1. *.* wil zeggen: alle files met een punt erin. Dus niet alle files in de directory. Als je alle files wilt hebben gebruik je 1 *

2. Wildcard expansion: voordat de opdracht wordt uitgevoerd, expands bash je commando. Aangezien er een * staat, wordt je commandolijn dus uitgebreid met de filenamen van alle files die matchen.

De uitkomst van die lijn is waarschijnlijk te groot en daarom moet je het op een andere manier proberen.


Probeer dit eens:


bash$find . -type f -exec chmod o+w {} \;

dit zoekt alle bestanden in de huidige (.) directory met als filetype f (alleen files, geen dirs dus) en op elke match voert hij uit: chmod o+w <filename>

de \; sluit het -exec commando af, en de {} wordt gereplaced met de huidige filename.

Zo wordt dus niet 1x chmod aangeroepen met 15000 files, maar 15000 keer chmod aangeroepen met 1 file.

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Mocht je op bovenstaande errors krijgen over de command ofzo.
Maak dan van -exec chmod {} \;
het volgende:
-exec chmod ''{}'' '';''

Verwijderd

ls -a | while read line
do
rm ${line}
done

-Desecrator

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 26 april 2001 18:46 schreef Desecrator het volgende:
ls -a | while read line
do
rm ${line}
done

-Desecrator
Euhm, mja, wat wil je daarmee?
rm ${line} kan dan vervangen worden door chmod o+w ${line} ?

Magoed, hetzelfde is te bereiken door even nog -depth 1 (of 0?) bij de find te plaatsen

Verwijderd

Op donderdag 26 april 2001 18:50 schreef ACM het volgende:

[..]

Euhm, mja, wat wil je daarmee?
rm ${line} kan dan vervangen worden door chmod o+w ${line} ?

Magoed, hetzelfde is te bereiken door even nog -depth 1 (of 0?) bij de find te plaatsen
Oeps, muteert die chmod in mijn hoofd naar rm :(

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 26 april 2001 20:22 schreef Desecrator het volgende:

[..]

Oeps, muteert die chmod in mijn hoofd naar rm :(
Bij mijn weten is dat niet helemaal hetzelfde hoor ;)

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Bedankt voor de tips. Die * heb ik waarschijnlijk wel eerder geprobeerd, maar omdat het niet werkte probeerde ik vervolgens *.*.
Pagina: 1