strippen von dateinamen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

joe knape

Benutzer
Registriert
09. Jan. 2015
Beiträge
16
Reaktionspunkte
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:
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"?
 
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