• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Datein automatisiert umbenennen

Hallo,

ich möchte Dateien beim kopieren umbennnen. Es soll aus dem Dateinamen der urspüngliche Speicherort hervorgehen.
a) Bsp. für neuen Dateinamen) /srv/share/daten/bnk/archiv_bilder/srvsharedatenbnkbilderSommerferien.hpg

Es es sollen alle Dateien mit der Endung jgp, rekusiv unter folgenden Pfad gefunden werden.
b) find /srv/share/daten/bnk/bilder/ -iname *.jpg

Die Dateien sollen nach folgenden Muster umbenannt werden (siehe auch Bsp. a):
c) Bsp. Muster für neuen Dateinamen) find /srv/share/daten/bilder/ -iname *.jpg | sed 's/\///g'` -exec ls {} \;

Die neuen Dateien sollen unter folgenden Pfad gespeichtwerden:
d) find /srv/share/daten/bnk/archiv_bilder/

Die Suche mit find ist erfordlich, da die Dateien in vielen Verzeichnissen verteilt liegen.

Vielen Dank vorab.

Gruß
os.
 
A

Anonymous

Gast
Na dann hast du doch schon alles was du zum umbenennen benötigst, außer die Hinweise auf eventuell verborgene Problemzonen.

Such mal im Forum, wir haben solche Themen hier schon in mehrfacher Ausführung ausführlich durchgesprochen und wahrscheinlich schon alles umbenannt was man umbenennen kann. Da sollten auch spezielle Tools zum Umbennen zu finden sein aber auch massenweise kleine Scripte mit ihren vor und Nachteilen besprochen worden sein. Nur mal ein Beispiel http://www.linux-club.de/viewtopic.php?f=21&t=26005

robi
 
OP
O

os.

Hallo,

folgendes Script habe ich gefunden:


#!/bin/bash
# blank-rename.sh
#
# Substitutes underscores for blanks in all the filenames in a directory.

ONE=1 # For getting singular/plural right (see below).
number=0 # Keeps track of how many files actually renamed.
FOUND=0 # Successful return value.

for filename in Suchbedingung #Traverse all files in directory.
do
echo "$filename" | grep -q " " # Check whether filename
if [ $? -eq $FOUND ] #+ contains space(s).
then
fname=$filename # Yes, this filename needs work.
echo $fname | sed -e "s/\///g"
#n=`echo $fname | sed -e "s/ /_/g"` # Substitute underscore for blank.
#mv "$fname" "$n" # Do the actual renaming.
let "number += 1"
fi
done

if [ "$number" -eq "$ONE" ] # For correct grammar.
then
echo "$number file renamed."
else
echo "$number files renamed."
fi

Leider weiß ich nicht wie man der folgenden Anweisung, meine Suchbedingung beibringt:
for filename in (Suchbedingung rekusiv)

Suchbedingung:
find /srv/share/daten/bilder -iname \*.jpg"fehlt mir meine find

Kann mir jemand helfen.
 
A

Anonymous

Gast
os. schrieb:
Leider weiß ich nicht wie man der folgenden Anweisung, meine Suchbedingung beibringt:
for filename in (Suchbedingung rekusiv)

Suchbedingung:
find /srv/share/daten/bilder -iname \*.jpg"fehlt mir meine find

this is simply
Code:
for filename in $(find /srv/share/daten/bilder  -iname \*.jpg)
do
..
mv "$filename" "$new_filename"
..
done

robi
 
OP
O

os.

Hallo,

wenn ich das Script wei folgt abändere, funktioniert es nicht mehr:
for filename in $(find /srv/share/daten/bilder -iname \*.jpg)

Ich erhalte folgende Fehlermeldung:
line 1: #!bin/bash: No such file or directory

Wenn ich mein Script wie wieder zurück ändere, läuft dieses:
for filename in *

In Zeile 1 steht folgendes:
#!bin/bash

Hat jemand eine Idee?

Vielen Dank vorab.

mfg
os.
 
A

Anonymous

Gast
os. schrieb:
Ich erhalte folgende Fehlermeldung:
line 1: #!bin/bash: No such file or directory


In Zeile 1 steht folgendes:
#!bin/bash
wenn schon dann
Code:
#!/bin/bash
Ansonsten sieht es so aus als das du da Schmierzeichen mit drin hast. (oder beim Einfügen hier im Forum?) Wenn nicht, dann nimm mal einen anderen Editor oder prüfe mal dein Editoreinstellungen. Auch beim c&p hier aus dem Internet hat sich schon so mancher bei falschen Einstellungen solche schwer zu findenden "Dinger" eingefangen.
zB http://www.linux-club.de/viewtopic.php?t=20480&start=14

robi
 
Oben