[Frage] - Cronjob-Befehle funktionieren nicht

  • 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.
Wer findet den Fehler?

Als Ergebnis sollte der Anfangsbuchstabe jedes Wortes im Dateinamen auf GROSS geändert werden (alternativ zumindest der erste). Allerdings bekomm ich bei allen Dateien mv: can't rename '/volume1/mein/verzeichnis/test/debug_pyload_20-10-2010_10-32-38.txt': No such file or directory (und die Meldung kann ich in dem Zusammenhang überhaupt nicht interpretieren :confused: ) - nach sechs Sdt. wildem Testen bin echt durch :/


#!/bin/sh
find /volume1/mein/verzeichnis/test -type f -name "[a-z]*" -print | while read file
do
new=`echo "$file" | sed 's/\<./\u&/'`
mv "$file" "$new"
done

Viele Grüße
 
Kennst du ipkg rename?
 
Seit Tagen am basteln und suchen ... hab hier ein Script zusammengebastelt, welches so ziemlich all meine Anforderungen erfüllt, allerdings funkt das nur im aktuell ausführenden Verzeichnis (one file per line), nicht rekursiv und ich komm nicht weiter, vielleicht hat jemand (jahlives/itari *ROFL*) ein Hinweis.

Rich (BBCode):
#!/bin/bash
for FILE in `ls -1`
do
NUMBEROFDOTS=`echo ${FILE} | gawk '{split($0,myarray,".") ; print asort(myarray)}'`
  if([ ${NUMBEROFDOTS} -eq 1 ]) then
      echo "!! Invalid filename: ${FILE}"
  else
      LASTDOT=`expr ${NUMBEROFDOTS} - 1`
      FILENAME=`echo ${FILE} | cut -d "." -f -${LASTDOT}`
      EXTENSIONOLD=`echo ${FILE} | cut -d "." -f ${NUMBEROFDOTS}`
      EXTENSIONNEW=`echo ${EXTENSIONOLD} | gawk '{print tolower($0)}'`
      if([ ${EXTENSIONOLD} == "sh" ]) then
          continue 2;
      else
           mv "${FILENAME}.${EXTENSIONOLD}" "`echo $FILENAME | perl -pe 's/(^|\.)([a-z])/$1\u$2/g;'`.${EXTENSIONNEW}"
      fi
  fi
done
 
Die Scripte machen mich fertig! Nach gefühlten Eintausend-Versuchen und zig schlaflosen Stunden bin ich der Lösung langsam ziemlich nahe *freu* mit dem ist meine Sammlung dann erstmal komplett :D

Das Script ändert rekursiv die Schreibweise aller Dateien und Ordner wie folgt Anfangsbuchstabe und der erste Buchstabe nach jedem Punkt groß, die Dateiendungen ausgenommen. Ist optisch noch nicht perfekt und muss auch mehrmals ausgeführt werden, aber mit ein paar Schleifen lässt sich sicherlich auch das lösen :-)

Code:
#!/bin/sh
for FILE in `find . -name "[a-z]*"`
do
      mv $FILE `echo $FILE | sed -r 's/(\<.[a-zA-Z])/\u\1/g;s/.Doc/.doc/;s/.Sh/.sh/'`
done
 
....... s/\.Doc$/.doc/ ..... wenn du den Punkt '.' meinst, musst '\.' schreiben, sonst steht der Punkt für ein beliebiges Zeichen. Das '$' bedeutet das Ende der Zeile ... damit bekommst eine Positionierung des Suchpattern.

Itari
 
Merci. Hab beides probiert und hat - logisch, aber nicht ganz im Sinne - beides funktioniert, bin nur mittlerweile sowas von verwirrt, in meinem Kopf kreisen Schleifen und Strings ziehen ihre Bahnen :p

Leider hab ichs bis jetzt nicht geschafft, dass das Script erst die Dateien und dann die Verzeichnisse abarbeitet. Na ja, bin froh, dass es nach drei bis viermaligem Aufrufen alles macht, was ich mir zum Ziel gesetzt hab. ... morgen ist ja auch noch ein Tag, heut geht inputtechnisch nix mehr rein :confused:

Grüßle
 
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