Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7034[/thread]

systembefehle mit dem backtick-op ausführen



<< >> 4 Einträge, 1 Seite
supersucker
 2005-06-04 20:11
#55326 #55326
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
hi,

ich möchte in einem verzeichnis das sehr viele dateien enthält bestimmte dateien löschen, das kann ich nicht direkt über

Code: (dl )
"rm -f *.bla"


machen, weil die argumentliste für rm zu gross ist (> 10000 dateien pro verzeichnis)

machs also mit:

Code: (dl )
 find . -name '*.dssp' -exec rm {} \;


das klappt auch in der konsole wunderbar, nur wenn ich das ganze in einem perl-script mache, also:
Code: (dl )
my $rmOutput = `find . -name '*.dssp' -exec rm {} \; `;


so, krieg ich die fehlermeldung:

Code: (dl )
find: Fehlendes Argument für "-exec".


was läuft da schief? muss ich noch irgendwas quoten?


danke im voraus....
Dubu
 2005-06-04 20:17
#55327 #55327
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Warum ueberhaupt Backticks?
Code: (dl )
unlink glob ('*.dssp') or die "kann nicht alle Dateien loeschen: $!";
supersucker
 2005-06-04 20:26
#55328 #55328
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
@Dubu:

weil ich an die einfachste aller möglichkeiten (die die du vorgeschlagen hattest) nicht gedacht hatte......:-)

würde mich trotzdem noch interessieren, warums mit den backticks nicht klappt, ich dachte alles was in backticks steht wird genau so an die shell übergeben ohne das ich noch irgendwas quoten muss....
betterworld
 2005-06-04 20:40
#55329 #55329
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Weil Du nur einen Backslash statt zweien geschrieben hast.

Und das ist genau der Grund, der gegen Backticks und system spricht: Man muss verdammt gut aufpassen, dass Sonderzeichen richtig behandelt werden, denn andernfalls faengt man sich leicht ein paar Exploits ein.\n\n

<!--EDIT|betterworld|1117903322-->
<< >> 4 Einträge, 1 Seite



View all threads created 2005-06-04 20:11.