Führen Sie einen Befehl mit dem Parameter „jeder Dateiname in einem Ordner“ aus

Führen Sie einen Befehl mit dem Parameter „jeder Dateiname in einem Ordner“ aus

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 cshoder tcshwürde dies alle Dateien und Verzeichnisse im aktuellen Verzeichnis durchlaufen. Ich habe die $iVariablensubstitution 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 -fTest. 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.

verwandte Informationen