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

moven aller Files aus einem Jahr mit -exec

Hallo

Ich möchte Files verschieben sie alle aus dem Jahr 2007 sind und bevor ich ein mv /ordnerbla/bluber das ganze zur Kontrolle als echo ausgeben lassen

cd /ordner
ls -la | (cut -d= -f8 | grep -v 2008 | grep -v [0-9][0-9]:[0-9][0-9]) -exec echo {} \;
er sagt dann
-bash: syntax error near unexpected token `-exec'

Das ganze auf SuSE 9.3

Es sollte so aussehen

ls -la | (cut -d= -f8 | grep -v 2008 | grep -v [0-9][0-9]:[0-9][0-9]) -exec mv /ordnerbla/blubber {} \;

was stimmt damit nicht (abgesehen das es evenuell leichter geht)?

Gruß und Danke
 
Ohne jetzt viel Ahnung zu haben würde ich vermuten das er Dank des ersten Pipe-Zeichens (|) das -exec nicht mehr dem ls zuordnet und einen Befehl -exec nicht kennt.
 
Hallo megazocker
Ich kenne mich mit grep nicht aus . Aber das verschieben mehrerer Dateien arbeitet meiner Ansicht nur mit dem Tool mmv.
SuSe 9.3 ist ja schon etwas älter und wird nicht mehr supportet. Ich weiß nicht ob es mmv dafür überhaupt gibt.
Meine Empfehlung: Suse 11.1 installieren.
Bis denne
L.B.
 
OP
M

megazocker

Newbie
Laut man ls
kennt ls sowas exec nicht

wie würde sowas mit find aussehen man find
gibt ja allerhand aus nur
soetwas wie reicht ja nicht
wie bringe ich find per mtime bei das alles aus dem jahr 2007 gemeint ist
find /ordner -mtime +10 -exec echo {} /;

Gruß und danke
 
OP
M

megazocker

Newbie
Ich denke ich habe es

Jahr 2007 hat 365 Tage
2008 hat 366 Tage
2009 bis 07.04 hat 96 Tage
tage per calc

find . -mtime +462 -mtime -827 -exec ls -la {} \; #jahr 2007
find . -mtime +96 -mtime -461 -exec ls -la {} \; #jahr 2008
 

abgdf

Guru
SuSe 9.3 ist ja schon etwas älter und wird nicht mehr supportet. Ich weiß nicht ob es mmv dafür überhaupt gibt.
Doch, sicher:

http://afs.caspur.it/afs/italia/project/mirrors/suse/install/9.3/suse/i586/mmv-1.01b-794.i586.rpm

Mit find ist aber schon soweit richtig. Nur etwas uncool, weil man die Werte bei jedem neuen Tag neu berechnen muß; ich würd's allgemeiner lösen. Es sei denn, es soll nur "quick'n dirty" sein.

Gruß
 
A

Anonymous

Gast
wer mit find und grep auf Kriegsfuss steht, kann ja mal awk zum Filtern versuchen
Code:
stat -c "%y;%n" * | awk -F ";" '/^2008-/ {print $2}' | while read DATEI
do
  echo "mv $DATEI ../2008-Achiv/$DATEI"
#  mv "$DATEI" ../2008-Achiv/"$DATEI" 
done
(Wies oben steht, gibts nur echo Ausgabe. Scharf wird es durch entfernen von "#"
Zum scharf-schalten des Scriptes muss natürlich erstmal das ../2008-Archiv Verzeichnis vorher existieren, sonst gibts nur Fehlermeldungen )

Damit lassen sich mit kleinen Änderungen im stat-Befehl dann auch Dateien verschieben die zB lange niemand mehr gelesen hat, (wahrscheinlich auch das Backup nicht ;) ) oder , oder , oder


robi
 
Ich würde den Ansatz:
- Referenzdatei mit 1.1.2008 0:00:00 anlegen ( mit touch )
- find mit -newer <referenzfile>, bzw. nicht newer... ( Achtung "!" wird von der bash teilweise auf der Kommandozeile als "ersetzen mit History" interpretiert.)

Ich könnte mir vorstellen, das es abhängig von den Language/LC_* Einstellungen unterschiedliche Wirkungen und Probleme bei ls oder stat gibt.

Ciao,
Haveaniceday
 
OP
M

megazocker

Newbie
hmm

awk ist mir zwar ein Begriff aber auch nicht wirklich bekannt

Kann einem da jemand mal einen Link zukommen lassen wo "awk" einem etwas näher bringt ?

sonst verstehe ich derzeit nur Bahnhof

In wie weit kommt das zum tragen ? ich sehe da noch keinen Zusammenhang
Code:
( Achtung "!" wird von der bash teilweise auf der Kommandozeile als "ersetzen mit History" interpretiert.)
 
A

Anonymous

Gast
Einen Einstieg in AWK findest du zB http://www.linupedia.org/opensuse/Awk

der Befehl ls mit den normalen Standardoptionen ist wirklich für solche Aufgaben wenig geeignet, da die Ausgabe doch oft schwer zu verarbeiten ist, und nicht ganz unabhängig von gesetzten Umgebungsvariablen ist.

mit stat und gezielten Optionen habe ich noch keine Überraschungen erlebt, ein solches Script läßt sich allerdings oftmals dann nicht oder schlecht auf andere UNIX-Betriebssysteme wie Solaris oÄ. portieren

Das mit dem ! bezieht sich wohl auf das negieren von Suchoptionen bei find. Wenn dort die Shell Probleme macht, sieht man das wahrscheinlich aber schon beim ersten ausprobieren. Ist mir so in Verbindung mit find auch noch nicht aufgefallen.


robi
 
robi schrieb:
Das mit dem ! bezieht sich wohl auf das negieren von Suchoptionen bei find. Wenn dort die Shell Probleme macht, sieht man das wahrscheinlich aber schon beim ersten ausprobieren. Ist mir so in Verbindung mit find auch noch nicht aufgefallen.
robi
Stimmt, das meinte ich. Durch das Leerzeichen nach dem "!" beim Negieren gibt es keine Probleme. Hatte ich übersehen.
stat scheint das Datum nicht zu verändern (bei unterschiedlichen Einstellungen der Umgebung) . ls schreibt das Datum
eventuell je nach Umgebung unterschiedlich heraus.

Caio,
Haveaniceday
 
Oben