Ich habe einige Verzeichnisse und Unterverzeichnisse, die Dateien ohne Dateierweiterung enthalten. Ich möchte zu .jpg
allen in diesen Verzeichnissen enthaltenen Dateien hinzufügen . Ich habe Bash-Skripte zum Ändern der Dateierweiterung gesehen, aber nicht nur zum Hinzufügen eines. Es muss auch rekursiv sein, kann jemand bitte helfen?
bash
file
shell
command-line
file-extension
Robjmills
quelle
quelle
for
Schleife beziehen, die die Bash stört, um eine Liste von Dateien zu durchlaufen, ist dies nicht korrekt. Die Bash-for
Schleife gibt iterativ jedenmv
Befehl aus.find
zuerst eine Liste von Dateien ein, bevor die-exec
Anweisung ausgeführt wird? Ich denke schon, aber ich möchte diesen Punkt klarstellen, bevor ich Endlosschleifen codiere.-not -name "*.*"
haben.Dadurch werden Dateien ohne Erweiterung gefunden und Ihre JPG-Datei hinzugefügt
quelle
Dies ist etwas spät, aber ich dachte, ich würde hinzufügen, dass eine bessere Lösung (obwohl vielleicht weniger lesbar) als die bisherigen sein könnte:
Verwendung der
find | xargs
Musters führt im Allgemeinen zu einer effizienteren Ausführung, da Sie nicht für jede Datei einen neuen Prozess erstellen müssen.Beachten Sie, dass hierfür die Version der Umbenennung erforderlich ist, die in Distributionen mit Debian-Geschmack (auch als Vorname bezeichnet) enthalten ist, und nicht die herkömmliche Umbenennung. Es ist jedoch nur ein winziges Perl-Skript, sodass es einfach genug wäre, den obigen Befehl auf jedem System zu verwenden.
quelle
so was,
Ich erwarte nicht, dass Sie durch Leerzeichen getrennte Dateinamen haben.
Wenn Sie dies tun, müssen die Namen ein wenig verarbeitet werden.
Wenn Sie den Befehl aus einem anderen Verzeichnis ausführen möchten,
können Sie die ersetzen
find .
mitfind /target/directory
.quelle
-type
.Um alle Dateien ohne Erweiterung in Windows Basic umzubenennen, können Sie Folgendes tun:
ren * *.jpg
Da die Datei keine Erweiterung hat, verwenden Sie einfach das *, oder wenn Sie PNG in JPG ändern möchten, verwenden Sieren *.png *.jpg
quelle
rename
Ich bin mir nicht sicher, ob es Dateien ohne Erweiterungen umbenennen kann (ich bin gerade unter Windows 7).
quelle
rename
, einen als C-Programm, das in util-linux-ng enthalten ist, und einen als Perl-Programm (von Wall selbst) auf den Debian-Maschinen unserer Universität. Eigentlich rekursiert keiner von beiden.