[Frage] - Cronjob-Befehle funktionieren nicht

Status
Für weitere Antworten geschlossen.

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
42
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Kennst du ipkg rename?
 

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
42

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
42
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
 

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
42
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
....... 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
 

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
42
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