Linux: Verschieben von Dateien nach Datum
lima-city → Forum → Heim-PC → Betriebssysteme
aktuellen verzeichnis
beachten
befehl
beispiel
code
dank
datei
datum
file
leute
list
liste
monat
oktober
september
shell
type
verschieben
zehn
ziel
-
Hallo Leute,
habe im Moment ein Problem, an dem ich zu nagen hab.
Das ganze spielt auf einer Linux-Kiste ab. (SuSE ES) Dort liegen in einem Folder über 5000 Dateien jeweils vom September & Oktober.
Über einen ls -l | grep 2008-09 werden mir bspw. nur die Dateien vom Sep. angezeigt.
Wie kann ich nun diese Dateien in einen separaten Ordner Sep verschieben. Selbiges möchte ich auch mit den Dateien vom Oktober machen.
Evtl. ist das über eine For-Schleife machbar.
Könnt ihr mir hierbei weiterhelfen?
PS: Wir arbeiten nur mit der Shell auf unseren Servern.
Gruß,
--Sovietcars--
Beitrag geändert: 9.10.2008 11:25:28 von sovietcars
Beitrag geändert: 9.10.2008 11:44:16 von sovietcars -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
find . -maxdepth 1 -type f -mtime 10 -exec mv #{#} Sep/ #;
# bitte durch \\ ersetzen. Blöde Forensoftware ;)
Ist zwar ungetestet, sollte aber funktionieren.
Zur Erläuterung:
. bedeutet es wird im aktuellen Verzeichnis gesucht
maxdepth 1 bedeutet, es wird nur im aktuellen Verzeichnis gesucht
type f bedeutet es wird nur nach Dateien gesucht
mtime 10 bedeutet die Datei wurde vor mehr als zehn Tagen zuletzt bearbeitet (Heute ist der 10. Oktober)
exec gibt einen Befehl an der ausgeführt wird
mv der Befehl der ausgeführt wird
\\{\\} wird durch den Dateinamen ersetzt
Sep/ ist das Verzeichnis in das Verschoben wird
\\; beendet exec
Beitrag geändert: 10.10.2008 15:49:15 von kochmarkus -
Hey! Danke!
habe es bereits anders gelöst.
Der find - Befehl kann mir leider nicht genau die Dateinen aus einem Monat filtern.
Habe mir dazu ein kleines Script geschrieben. Es waren ja wie gesagt über 5000 Dateien in dem Ordner.
Daher bekam ich immer die Fehlermeldung "Argument list too long".
Mit dem Scripte konnte ich nach Monaten sortiert verschieben.
#!/bin/bash # Autor: Ich =) # Datum: 09.10.2008 echo "Geben Sie die Liste ein:"; read liste; echo "Geben Sie das den Monat ein (JJJJ-MM):"; read datum; echo "Geben Sie den Zielordner ein:"; read ziel; grep $datum $liste | awk '{print $8}' | while read file do { echo $file; mv $file $ziel; } done
Mit der ersten Abfrage wird die Liste angefordert, die perls -l > list.txt
Dann wird nach dem Jahr und dem Monat gefragt. Bspw. "2008-09" für September.
Zum Schluss wird nach dem Zielordner gefragt.
Läuft perfekt, und umgeht diese Einschränkung der zu langen Argument-Liste.
Gruß,
--Sovietcars--
Beitrag geändert: 10.10.2008 16:29:59 von sovietcars -
Bei deiner Lösung solltest du aber auch beachten, dass Dateien die zufällig ein "2008-09" im Namen haben verschoben werden.
-
Danke für den Hinweis! ;)
Die Namen sind alle mit einem langen kryptischen Namen aus Zahlen und Buchstaben, und haben keine weitere Bedeutung.
Beispiel: "xxxxxxxxxxx09187234107234.txt" -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage