Ok, ich habe ein paar Dateien, die mit einem Bindestrich beginnen, -. Was nicht so gut ist ... und ich möchte sie umbenennen. In meinem speziellen Fall möchte ich nur eine Figur vor sie stellen.
Ich habe die folgende Zeile gefunden, die funktionieren sollte, aber aufgrund des Bindestrichs funktioniert sie nicht:
for file in -N*.ext; do mv $file x$file; done
Wenn ich einen echo
davor lege, mv
bekomme ich einen Haufen
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
Welches ist richtig, außer natürlich wird es denken, dass der erste Dateiname Optionen ist. Also, wenn ich das entferne echo
und es laufen lasse, bekomme ich nur ein paar
mv: illegal option -- N
Ich habe versucht, es zu ändern
for file in -N*.ext; do mv "$file" "x$file"; done
aber die Anführungszeichen werden einfach ignoriert, wie es scheint. Versuchte einfache Anführungszeichen zu verwenden, aber dann wurde die Variable nicht erweitert ... Was mache ich hier?
Update: Ich habe jetzt auch versucht die Zitate zu zitieren. So was:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
Und wenn ich das wiederhole, sieht es richtig aus, aber wenn ich es tatsächlich ausführe, bekomme ich es einfach
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
Ich habe nur keine Ahnung, wie ich das jetzt machen soll ... seufz
Antworten:
Sie müssen das Schlüsselwort verwenden
--
, um dem Befehl mv mitzuteilen, dass die Argumente nicht als Optionen interpretiert werden sollen. Uhr:Verwenden Sie
--
nach allen Optionen in der Befehlszeile. Zum Beispiel, wenn Sie die verwenden sind versuchen-i
Option mv , würde es gehen vor--
:quelle
./
vor dem Dateinamen bleiben könnte , was funktionieren würde. Aber dies ist natürlich eine noch schönere Option :)./
. aber du hast recht, das funktioniert auch in dieser situation.--
Bedeutung, keine weiteren Argumente als Optionen zu verarbeiten, eine Konvention ist und nicht von allen Programmen respektiert wird. Einige benutzen dafür einen Einzelgänger-
und andere akzeptieren nichts für diesen Zweck. Es./
lohnt sich also, das Voranstellen im Hinterkopf zu behalten.--
Als besonderes Argument dient eine GNU-Erweiterung, die jedoch in den POSIX-Richtlinien erwähnt wird. siehe Abschnitt 12.2, Richtlinie 10: opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html ... dies bedeutet, dass Sie erwarten können, dass die meisten POSIX- und GNU-Dienstprogramme die Konvention einhalten, andere jedoch möglicherweise nicht.Eine andere Technik besteht darin, das übergeordnete Verzeichnis mit dem Dateinamen einzuschließen ...
Um die Datei '-file-to-rename' in 'file-to-rename' umzubenennen ...
Vielen Dank, dass Sie @Skippy le Grand Gourou. Bestätigt, dass ./-file-to-rename mit
mv
undrm
wie in ... funktioniertquelle
./
.