Dateien im Verzeichnis umbenennen/neu auflisten

Dateien im Verzeichnis umbenennen/neu auflisten

In einigen Verzeichnissen habe ich viele Dateien mit dem Namen

...
DSC_0002
DSC_0005
DSC_0010
...

Ich möchte Dateien umbenennen/neu auflisten

DATEI_0001
DATEI_0002
...

Vielleicht muss ich die Nummerierung NICHT bei 0001 beginnen

Antwort1

Angenommen, das Verzeichnis, das diese Dateien enthält, ist /Pfad/zum/Verzeichnis. Dann
sieht das benötigte Skript folgendermaßen aus:

start=1
cd "/path/to/dir"
for file in ./*;do
  mv "${file}" "FILE_$(printf "%04d" $start)"
  start=$((start+1))
done

Antwort2

versuchen

ls | awk '{printf "mv %s FILE_%04d\n",$0,NR ;} ' | bash
  • Stellen Sie sicher, dass keine Dateien lustige Namen haben.
  • remove |Bash-Teil, um eine Vorschau zu erhalten.
  • verwenden NR+666, um bei 667 zu beginnen.
  • verwenden Sie %02doder %06d, um die Zahl 01 oder 000001 zu generieren.

Antwort3

Sie können beispielsweise Folgendes tun:

#!/bin/bash 
Counter=${1:-1}   # It will take the starting number as 1st parameter
WhichDir=${2:-.}  # It will take the path as 2nd parameter

                  # We try to see if the directory exists and if you can go there
(cd "$WhichDir" 2>/dev/null) || { echo "# $WhichDir NOT FOUND " ; exit 1; }

cd "$WhichDir"                            # it exists and you can go there
shopt -s nullglob                         # see notes
for f in DSC_*                            # for all the files in this dir
do
  New_Name=$(printf "FILE_%04d.jpg" $Counter)
                                          # change .jpg in what you need
  Counter=$(($Counter +1))                # increase the counter
  echo "mv -i \"$f\" \"$New_Name\" "      # the -i will prompt before overwrite
  # mv -i "$f" "$New_Name"                # uncomment this line to make it works
exit 0

Anmerkungen

  • Wenn duspielenmit mvkann gefährlich sein. Es kann vorhandene Dateien überschreiben. Es kann Verzeichnisse verschieben/umbenennen. Daher ist es besser, vor der Ausführung eines Skripts eine visuelle Überprüfung durchzuführen. Anschließend können Sie die Ausgabe in eine Shell weiterleiten:
    z. B. ./Myscript.shist alles in Ordnung? Wenn ja, können Sie schreiben ./Myscript.sh | /bin/bash(oder Sie können es ändern, indem Sie das „Echo“ oder den Kommentar in der folgenden Zeile löschen).
  • Es ist besser zu schreiben mv -i: es wird vor dem Überschreiben gefragt
  • DSC_*Wenn sich im aktuellen Verzeichnis keine Dateien befinden, shopt -s nullglobwerden Erweiterungsfehler vermieden.

  • Allgemeines ist nicht sicher, dieAusgabe vonlsauch wenn es in Ihrem Fall kein wirkliches Problem sein sollte, da Sie für die Dateien den Standardnamen von der Kamera haben sollten DSC_nnnn.jpg.

  • Normalerweise gibt es eine Erweiterung (vielleicht .jpgoder .tifoder .raw) ... ändern oder löschen Sie sie im Skript, um sie Ihren Anforderungen anzupassen.

verwandte Informationen