Linux Umbenennungs Dateien basierend auf einer anderen Datei im Verzeichnis?
-
10-10-2019 - |
Frage
Ich habe über 750 Verzeichnisse bekommt, die enthalten zwei Dateien jeweils:
long_somewhat_random_filename.jpg
thumb.jpg
Was ich möchte, ist tun Verwendung find
oder etwas ähnliches zu Umbenennungs thumb.jpg
zu long_somewhat_random_filename_thumb.jpg
. Mein Gehirn ist ein bisschen unscharf im Moment.
ich es mit einem Perl-Skript tun könnte, aber wenn es eine etwas einfache Art und Weise ist es in bash zu tun, das ist einfacher.
Lösung
Geben Sie das Skript unter einem Schuss. Im Augenblick ist die echo
macht es gutartig so können Sie versuchen, bevor Sie kaufen sozusagen. Wenn Sie mögen, was Sie sehen, die echo
entfernen und das Skript erneut ausführen, um tatsächlich die Änderungen vorzunehmen.
#!/bin/bash
while read file; do
echo mv "${file%/*}/thumb.jpg" "${file%.*}_thumb.jpg"
done < <(find . -type f ! -name "thumb.jpg" -name "*.jpg")
Input
$ find . -type f -name "*.jpg"
./dir1/dir1_foo_bar.jpg
./dir1/thumb.jpg
./dir2/dir2_foo_bar.jpg
./dir2/thumb.jpg
./dir3/dir3_foo_bar.jpg
./dir3/thumb.jpg
./dir4/dir4_foo_bar.jpg
./dir4/thumb.jpg
./dir5/dir5_foo_bar.jpg
./dir5/thumb.jpg
Output
$ ./mvthumb.sh
mv ./dir1/thumb.jpg ./dir1/dir1_foo_bar_thumb.jpg
mv ./dir2/thumb.jpg ./dir2/dir2_foo_bar_thumb.jpg
mv ./dir3/thumb.jpg ./dir3/dir3_foo_bar_thumb.jpg
mv ./dir4/thumb.jpg ./dir4/dir4_foo_bar_thumb.jpg
mv ./dir5/thumb.jpg ./dir5/dir5_foo_bar_thumb.jpg
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow