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

Datei löschen - automatisch

Hallo,

ich habe in dem Verzeichnis /root/backup/ zwei Dateien. Ich kenne deren Namen nicht, da sie mit einem Datum versehen sind. Ich möchte nun beide Namen auslesen und die älteste Datei löschen. Folgenden Befehl nutze ich, der nicht ganz funktioniert:

Code:
ssh -i /etc/ssh/ssh_host_rsa_key root@linux2 "cd /root/backup/ && rm $(ls | sort -r | sed '1,1d' | sed '2,3d')"

Ich wechsel also in das Verzeichnis auf dem Fremdrechner und will dann die älteste Datei in dem Verzeichnis löschen. Leider kommt folgenden Meldung:

Code:
rm: cannot remove `icons': No such file or directory

Für mich total unerklärlich!

Danke.
 
Schmidtl schrieb:
Code:
ssh -i /etc/ssh/ssh_host_rsa_key root@linux2 "cd /root/backup/ && rm $(ls | sort -r | sed '1,1d' | sed '2,3d')"
Das, was zwischen den Klammern steht wird schon von der Shell evaluiert BEVOR der ssh ausgeführt wird. "icons" wird also eine Datei oder Verzeichnis sein, dass auf dem lokalen Rechner liegt. Einfache statt doppelte hochkommas sollten das Problem lösen. Dafür dann aber die Hochkommas beim sed weglassen.

Tipp:
Wenn du beim sed nur die zweite Zeile ausgeben willst schreibe:
Code:
sed -n 2p
Wenn es nach dem Alter einer Datei geht könnte man auch den Datumsstempel des Dateisystems nehmen. Für mehr Infos siehe hierzu:
Code:
man find
 
Bei ls auf jeden Fall die Option "-t" nutzen. Ich glaube nicht,
dass sonst die Reihenfolge passt !

Haveaniceday

PS: Ich fände eleganter: (dass echo entfernen, wenn es "scharf" werden soll)
ls -t | sed -n 2p | xargs echo rm
 
Oben