Antworten:
Sie müssen alle Dateien durchlaufen
for f in *.txt; do
mv "$f" "${f%.txt}.csv"
done
Wenn Sie Dateien mit Namen haben, die ebenfalls mit a beginnen, .
müssen Sie diese möglicherweise ausführen
for f in *.txt .*.txt; do
[[ -f "$f" ]] && mv "$f" "${f%.txt}.csv"
done
mv "$f" "${f%.txt}.csv"
.
.something
Dateien in der Shell spielen, würde ich nicht empfehlen, Dateinamen trotzdem mit einem Punkt zu beginnen. Wenn Sie wirklich müssen, können Sie for f in .*.txt; do
stattdessen immer laufen .
shopt -s dotglob
und die Dateierweiterung diese aufnimmt.
Das funktioniert auch gut:
# change to the Zsh
zsh
# load the built-in zmv function
autoload -U zmv
# rename the files
zmv '(*).txt' '$1.csv'
.
ls *.txt |awk '{print "mv "$1" " substr($1,1,(index($1,".txt")))"csv"}' |sh
Befehlserklärung:
ls *.txt
listet Dateien auf, die mit txt enden
| awk '{print "mv "$1" " substr($1,1,(index($1,".txt")))"csv"}
Gibt den Befehl aus, mit dem die mit txt aufgelisteten vorherigen Dateien in csv umbenannt werden können
| sh
führt den zuvor gedruckten Befehl aus und benennt so die Dateien effektiv um
Hinweis: Wenn Sie alle Dateien einschließlich versteckter Dateien (die mit beginnen .
) auflisten möchten, verwenden Sie ls -a *.txt
stattdessen
osascript
.