strippen von dateinamen

Status
Für weitere Antworten geschlossen.

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
freunde, ich benötige mal gefährliches schwarmwissen.
ich möchte mit hochgeladenen dateien auf mein NAS vieles umbenennen, verschieben, löschen usw.
ich habe allerdings nur recht rudimentäre kenntnis von befehlszeilen und kommandos..
ich habe z.b. das verschieben von bestimmten dateien im aufgabenplaner so gelöst:
find /volume1/photo/_upload/ -type f -name '*FB_*.jpg' -exec mv -i {} /volume1/photo/facebook/ \;
nun kommt die 100.000 euro frage:
wie kann ich von bestimmten dateien z.b. die ersten vier zeichen abschneiden? ich möchte, das das NAS ein bestimmtes verzeichnis incl. aller unterverzeichnisse nach z.b. IMG-*.jpg durchsucht und dieses IMG- vorne abschneidet, unter gleichem dateinamen wieder im selben verzeichnis speichert...
kann man im aufgabenplaner zwei befehlszeilen eingeben, die müssen ja mit irgendeinem zeichen getrennt sein, oder? also erst die dateinamen um die ersten vier zeichen kürzen und dann in ein anderes verzsichnis verschieben...
danke im voraus
joe
 
Zuletzt bearbeitet:

mamema

Benutzer
Mitglied seit
23. Okt 2009
Beiträge
667
Punkte für Reaktionen
132
Punkte
63
im linux bereich gibts da mächtige Kommandos. Wenn Du damit aber nicht so warm wirst, warum nimmst Du dann nicht ein GUI Tool wie "Bulk Rename Utility"?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
nun kommt die 100.000 euro frage
Meine Kontonummer schicke ich dir via PN ;)

Bash:
#!/bin/sh

Source=/volume1/photo/_upload
Target=/volume1/photo/facebook

for f in `find $Source -type f -name '*FB_*.jpg'`; do
    # create variables with the source path and the original source file name
    SourcePath=`dirname "$f"`
    SourceFile=`basename "$f"`
  
    # create variable with the subdirecotry where the file is stored
    SourceSubDir=`echo $SourcePath | sed -e 's|'$Source/'||g'`
  
    # create varaible with the substituted filename that shall be stored at the target
    TargetFile=`echo $SourceFile | sed -e 's/^IMG-//'`

    # create variable with the target directory including the originals subdirecotry
    TargetDir=$Target/$SourceSubDir
  
    # check if the subdirectory exists at target, otherwise create it
    if [ ! -d  $TargetDir ]; then
        mkdir -p $TargetDir
    fi

    # just for debugging, print the original file that was found and the target directory with the substituted filename
#    echo $f
#    echo $TargetDir/$TargetFile
  
    # move file from orginal source to target with the substituted filename
    mv $f $Target/$SourceSubDir/$TargetFile
  
done

exit 0


script-find-rename-mv.png
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat