Ich möchte einen Befehl ausführen, nennen wir ihn abc und fügen als Parameter jeden Dateinamen im aktuellen Ordner hinzu. Wie kann ich dies in C Shell (oder einer anderen Skriptsprache) tun?
Antwort1
Mit csh
oder tcsh
würde dies alle Dateien und Verzeichnisse im aktuellen Verzeichnis durchlaufen. Ich habe die $i
Variablensubstitution in Anführungszeichen gesetzt, falls einige der Namen Leerzeichen enthalten.
foreach i (*)
abc "$i"
end
Wenn Sie nur die Dateien, nicht die Verzeichnisse abrufen möchten, verwenden Sie den -f
Test. Hier habe ich die Kurzformanweisung der C-Shell verwendet if
.
foreach i (*)
if (-f "$i") abc "$i"
end
Antwort2
NachschlagenxargsWenn Ihre Shell meiner ähnelt, sollte Folgendes problemlos funktionieren:
find . -type f -maxdepth 1 | xargs abc
Wenn Sie über Leerzeichen in den Dateinamen besorgt sind, lesen Sie den Kommentar von Daniel Andersson unten.