it-swarm.com.de

Alle Dateien im Verzeichnis von $ Dateiname_h in $ Dateiname_halb umbenennen?

Ganz einfach.

Wie kann ich umbenennen? 

05_h.png
06_h.png

zu 

05_half.png
06_half.png

Zumindest denke ich, dass es einfach ist, aber es ist schwer für Google, wenn Sie es nicht bereits wissen. 

Vielen Dank....

106
Richard

Verwenden Sie einfach bash, ohne dass Sie externe Befehle aufrufen müssen.

for file in *_h.png
do
  mv "$file" "${file/_h.png/_half.png}"
done

Nicht hinzufügen #!/bin/sh

Für diejenigen, die diesen One-Liner brauchen:

for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done
234
bash-o-logist

Versuchen Sie den Befehl rename:

rename 's/_h.png/_half.png/' *.png

Update:

verwendungsbeispiel:

einige Inhalte erstellen

$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls 
one_h.png  three_h.png  two_h.png

testlösung:

$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png  three_half.png  two_half.png
47
Michał Šrajer
for f in *.png; do
  fnew=`echo $f | sed 's/_h.png/_half.png/'`
  mv $f $fnew
done
9
Karoly Horvath

Suchen Sie eine reine bash-Lösung? Es gibt viele Ansätze, aber hier ist einer.

for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done

Dies setzt voraus, dass die einzigen Dateien im aktuellen Verzeichnis, die mit _h.png enden, die sind, die Sie umbenennen möchten.

Viel genauer

for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done

Vorausgesetzt, diese beiden Beispiele sind Ihre einzigen. Dateien.

Für den allgemeinen Fall ist das Umbenennen der Datei in hatwarabgedecktvorher .

8
Sorpigal

Verwenden Sie das rename-Dienstprogramm, das in Perl ..__ geschrieben ist. Möglicherweise ist es jedoch standardmäßig nicht verfügbar ...

$ touch 0{5..6}_h.png

$ ls
05_h.png  06_h.png

$ rename 's/h/half/' *.png

$ ls
05_half.png  06_half.png
4
Fredrik Pihl

Ich hatte eine ähnliche Frage: Im Handbuch wird umbenannt als beschrieben

rename [option] expression replacement file

so können Sie es auf diese Weise verwenden 

rename _h _half *.png

Im Code: '_ h 'ist der Ausdruck, nach dem Sie suchen. '_ half 'ist das Muster, das Sie ersetzen möchten. '* .png' ist der Dateibereich, den Sie nach Ihren möglichen Zieldateien suchen. 

Hoffe das kann helfen c:

2
James Yen
for i in *_h.png ; do
  mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done
2
ztank1013

Ein anderer Ansatz kann manuell mit der Option Stapelumbenennung verwendet werden 

Klicken Sie mit der rechten Maustaste auf die Datei -> File Custom Commands -> Batch Rename Und Sie können h ersetzen. mit der Hälfte. 

Dies funktioniert für Linux-basierte GUI mit WinSCP etc

1
Easwar

Einzeiler:
for file in *.php ; do mv "$file" "_$file" ; done

0
Jadeye

Verwenden Sie das Dienstprogramm rename:

[email protected]:/tmp/foo $ touch 05_h.png 06_h.png
[email protected]:/tmp/foo $ rename 's/_h/_half/' * 
[email protected]:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png
0
C. Ramseyer