Dateien in Ordnern in eine Liste schreiben mit der Größe der Datei???

mehlbox

mehlbox

Eroberer
Hallo zusammen,

habe ein kleines Verständnisproblem, habe folgendes Script geschrieben, welches in einem Hauptordner "ftp" Dateien sucht mir dem Namen *.old und die Namen und die Größe der Datei in eine Textdatei schreibt. Nach dieser Liste soll gelöscht werden !! Nun stört es aber das vor den Dateinamen in der Liste die Ordnerstruktur mit angegeben wird, möchte nur den Dateinamen und die Größe in der Textdatei stehen haben damit ich mit einem weiteren Befehl diese Textdatei öffne und die darin stehenden Dateien Schritt für Schritt lösche.

Könnt Ihr mir dabei weiterhelfen??

Script:
# Waehrend der Testphase zur Sicherheit erstmal schauen was geloescht
# werden soll !! Deshalb erstmal eine Liste erstellen. . .

# in den Ordner wechseln
cd /ftp

# Dateien suchen unter /ftp die lter als 5 Tage sind und Liste erzeugen

find . -mtime +5 -name "*.old" -exec ls -rt {} \; >/opt/scripts/reorgftp/reorgliste

# Dateien in eine weitere Liste schreiben mit größen Angaben zum Test
find . -mtime +30 -name "*.old" -exec du -hx {} \; >/opt/scripts/reorgftp/testliste

# Anzeige der Textdatei auf dem Bildschirm nach beenden des Scripts zum testen und schauen.
cat /opt/scripts/reorgftp/reorgliste

# Nach der Testphase die Datei reorgliste öffnen und die darin enthaltenden Dateiennamen nach und nach löschen.

Aufbau der jetzigen Liste mit den Ordnernamen was mich aber stört zum Auslesen der der reinen Dateinamen.

6.8M ./dateien/firma/92087441600405001.old
10M ./dateien/firma/92012345804711001.old

Ausehen möchte ich das es so:

92087441600405001.old 6.8M

Danke hoffe Ihr könnt mir da weiterhelfen?

Gruß mehlbox
 
statt
Code:
find . -mtime +30 -name "*.old" -exec du -hx {} \; >/opt/scripts/reorgftp/testliste
benutze doch
Code:
find . -mtime +30 -name "*.old" -printf  "%f\t%kk\n" >/opt/scripts/reorgftp/testliste

Aber wie willst Du die Datei loeschen, wenn Du die Verzeichnisse nicht angegeben hast?
 
Code:
find . -mtime +30 -name "*.old" -exec du -hx {} \; | perl -p -e 's|\S*\/||' >/opt/scripts/reorgftp/testlist

edit: rikola war schneller. Und viele Wege führen nach Rom :)
edit: Mist, den greedy-Modus übersehen. Korrigiert.
 
Zuletzt bearbeitet:
Aber immer gut, verschieden Wege zu kennen! ;-)
 
Besonders, wenn meiner falsch war. Aber nu ist er korrigiert ;)
 
Hallo zusammen, erstmal vielen Dank, Eure Lösungswege klappen, aber ihr habt recht wenn ich die Ordner struktur nicht weiss kann ich die Datei nicht löschen.

Wie kann ich denn die Datei auslesen und nach einander abarbeiten und die Dateien löschen?

Danke
 
Hallo
mehlbox schrieb:
Hallo zusammen, erstmal vielen Dank, Eure Lösungswege klappen, aber ihr habt recht wenn ich die Ordner struktur nicht weiss kann ich die Datei nicht löschen.

Wie kann ich denn die Datei auslesen und nach einander abarbeiten und die Dateien löschen?

Danke
Was du suchst ist read.
Dazu steht näheres in der man bash-> falls du die bash nutzt.
Code:
while read VAR1 VAR2;
do
Hier dein Code
done <INPUTFILE

Gruß Wolfgang
 
Code:
awk '{print $2}' /opt/scripts/reorgftp/testliste | xargs rm
 

Ähnliche Themen

[Tcl / Shell] Ändern einer Datei per vi - Änderungsdatum einer Datei erfassen

Datei aus Ordnern in eine Datei schreiben mit Formatierung ???

Bestimmte Dateienb älter 5 Tage löschen

Zurück
Oben