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.

War es hilfreich?

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
scroll top