Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Dateien löschen außer die neuesten mit Hilfe von tail und xargs

Mitglied: FalkIT

FalkIT (Level 1) - Jetzt verbinden

19.02.2014, aktualisiert 20.02.2014, 2664 Aufrufe, 11 Kommentare

Hi zusammen,
ich will jeden Abend ein Script laufen lassen, welches in verschiedenen Ordnern, alle Dateien bis auf die letzten 3 löscht. Der code den ich mir bisher zusammengebaut habe, funktioniert allerdings nur wenn ich mich in dem jeweiligen Verzeichnis befinde. Ich habe etwas rumprobiert, allerdings noch keine Lösung gefunden, bisher sieht der Code so aus:

ls -t /srv/www/ordner1/ordner2/ordner3/1111111 | tail -n +4 | xargs rm -r -f

Er soll also die anzahl der Dateien/Ordner in 1111111 abgefragt werden und dann alles ab der 4. neuesten gelöscht werden. Wie gesagt, befinde ich mich im Ordner 1111111 macht er das auch so wie er es soll, da es aber automatsich und nicht nur für einen Ordner ablaufen soll, muss ich beim löschen hinten noch etwas anfügen, was mir aber nicht einfallen will.

Danke schon mal

Falk
Mitglied: ITvortex
19.02.2014 um 15:34 Uhr
Hi,

rm -rf /ordner1/ordner2/usw./

meinst du das?

lg

ITvortex
Bitte warten ..
Mitglied: Cthluhu
19.02.2014 um 16:19 Uhr
Hi,

Du könntest noch ein find drüberstülpen. In etwas so:
01.
find base_folder -type d -exec ls -t {} | tail -n +4 | xargs rm -r -f \;
Achtung: code ist ungetestet und soll nur als Vorschlag dienen.

mfg

Cthluhu
Bitte warten ..
Mitglied: FalkIT
19.02.2014 um 16:33 Uhr
Hi Cthluhu,
das geht glaube ich ein bisschen an dem vorbei wie ich es haben will.
Das einzige was fehlt ist im grunde, dass er den letzten Befehl (xargs rm -r -f) im richtigen Verzeichnis ausführt. Ein cd davor in das jeweilige Verzeichnis bringt nichts, auch rm /Ordnerstruktur/Ordner/Ordner nicht.
Kann doch eigentlich nur eine Kleinigkeit sein die hier fehlt..
Bitte warten ..
Mitglied: Cthluhu
19.02.2014, aktualisiert um 16:44 Uhr
Ok, das hab ich falsch verstanden.
Wie siehts damit aus
01.
 export FOLDER="/srv/www/ordner1/ordner2/ordner3/1111111"; ls -t $FOLDER | sed 's!^!$FOLDER/!' | xargs echo 
Der tail fehlt und rm hab ich mit echo ersetzt (dass nix schief geht).

Edit: Tippfehler im code entfernt:
Bitte warten ..
Mitglied: Lochkartenstanzer
LÖSUNG 19.02.2014, aktualisiert 20.02.2014
Zitat von FalkIT:

ich will jeden Abend ein Script laufen lassen, welches in verschiedenen Ordnern, alle Dateien bis auf die letzten 3 löscht.

moin,

  • Sollen insgesammt nur die letzten 3 übrigbleiben oder in jedem Ordner nur die letzten 3?
  • liegen diese ordner im gleichen unterordner?
  • sollen auch unterordner in dieses löschen mit einbezogen werden oder sollen nur gelöscht werden?
  • usw.

lks
Bitte warten ..
Mitglied: FalkIT
19.02.2014 um 17:12 Uhr
Hi,

* Sollen insgesammt nur die letzten 3 übrigbleiben oder in jedem Ordner nur die letzten 3?
  • liegen diese ordner im gleichen unterordner?
  • sollen auch unterordner in dieses löschen mit einbezogen werden oder sollen nur gelöscht werden?
  • usw.

Die Struktur sieht so aus:
/Ordner1/Unterordner1/1111111/1111112
/Ordner1/Unterordner1/1111111/1111113
/Ordner1/Unterordner1/1111111/1111114
/Ordner1/Unterordner1/1111111/1111115
/Ordner1/Unterordner1/1111111/1111116
/Ordner1/Unterordner1/1111111/1111117
/Ordner1/Unterordner1/1111111/1111118
/Ordner1/Unterordner1/1111111/1111119
....

/Ordner1/Unterordner1/1111112/1111112
/Ordner1/Unterordner1/1111112/1111113
/Ordner1/Unterordner1/1111112/1111114
/Ordner1/Unterordner1/1111112/1111115
/Ordner1/Unterordner1/1111112/1111116
/Ordner1/Unterordner1/1111112/1111117
/Ordner1/Unterordner1/1111112/1111118
/Ordner1/Unterordner1/1111112/1111119
....

Es sollen in den Ordnern 1111111, 1111112, alleOrdner/Dateien gelöscht werden, außer 1111119, 1111118, 1111117 (wenn wir davon ausgehen dass diese drei die neusten sind).
Insgesamt gibt es 24 Ordner also 1111111 - 1111124, deren Inhalt jeweils bis auf die neuesten 3 gelöscht werden soll. Wenn es sich bei den zu löschenden Daten um Ordner handelt, soll der komplette Inhalt gelöscht werden, egal, was sich darin befindet.

Gruß

Falk
Bitte warten ..
Mitglied: FalkIT
19.02.2014 um 17:13 Uhr
Hi,
01.
 export FOLDER="/srv/www/ordner1/ordner2/ordner3/1111111"; ls -t $FOLDER | sed 's!^!$FOLDER/!' | 
02.
> xargs echo 
Der tail fehlt und rm hab ich mit echo ersetzt (dass nix schief geht).

werde ich ausprobiere, wenn ich wieder an die entsprechende Maschine ran komme, vielen Dank schonmal!


Falk
Bitte warten ..
Mitglied: Cthluhu
19.02.2014 um 17:21 Uhr
Zitat von FalkIT:
werde ich ausprobiere, wenn ich wieder an die entsprechende Maschine ran komme, vielen Dank schonmal!
Probier das lieber nicht an der life-Maschine, sondern an einem experimentellen Datenbaum.
Bitte warten ..
Mitglied: Lochkartenstanzer
LÖSUNG 19.02.2014, aktualisiert 20.02.2014
Zitat von FalkIT:

Es sollen in den Ordnern 1111111, 1111112, alleOrdner/Dateien gelöscht werden, außer 1111119, 1111118, 1111117 (wenn
wir davon ausgehen dass diese drei die neusten sind).
Insgesamt gibt es 24 Ordner also 1111111 - 1111124, deren Inhalt jeweils bis auf die neuesten 3 gelöscht werden soll. Wenn es
sich bei den zu löschenden Daten um Ordner handelt, soll der komplette Inhalt gelöscht werden, egal, was sich darin
befindet.

Mein Einzeiler-Quickshot:

echo "#!/bin/bash" > /tmp/scratchfile-xyz.sh ; ls -d /Ordner1/Unterordner1/* | xargs -l1 -I XXXX echo "ls -td XXXX |   tail -n +4 | xargs rm -r -f" >> /tmp/scratchfile-xyz.sh ; source /tmp/scratchfile-xyz.sh
Eventuell kannst Du ja das rm erstmal mit "echo" entschärfen", um zu sehen, ob die "richtigen" Objekte gelöscht werden. u.u. müssen da auch noch einige sudos eingestreut werden.

lks

nachtrag: bei meinem Einzeier werden in jedem der 24 ordner die drei neuesten übriggelassen.

nachtrag2: Wenn Du insgesammt nur die 3 neuesten übriglassen willst, reicht auch:

 ls -td /Ordner1/Unterordner1/*/*  | tail -n +4 | xargs rm -r -f
Bitte warten ..
Mitglied: VooDoo4711
LÖSUNG 19.02.2014, aktualisiert 20.02.2014
Hallo Falk,

probier mal folgendes Konstrukt aus ;)

find /tmp -type f -printf '%T@ %p\n' | sort -nr | cut -d " " -f2 | tail -n +4 | xargs rm -r -f

Die Zeile sucht in /tmp alle Files (für Files und Directories das "-type f" weg lassen) und gibt sie mit ihrer Modification-Time und komplettem Pfad aus (das war Dein Knackpunkt),
dann werden die gefundenen Dateien umgekehrt und numerisch sortiert,
dann schneiden wir nur die Pfade raus und werfen die Timestamps weg,
dann "verschonen" wir Deine gewünschte Anzahl von Dateien
und zuletzt kommt das "rm" zu Zug.

Das sollte es dann gewesen sein ;)

Hoffe das hilft Dir weiter. Ich hab's nicht großartig getestet - also VORSICHT!

Nachtrag: Oder Du nimmst die schöne(re) Zeile von Lochkartenstanzer
Bitte warten ..
Mitglied: FalkIT
20.02.2014 um 10:46 Uhr
Danke für die verschiedenen Lösungen!
Aus faulheit, habe ich die Lösung von VooDoo genutzt
Werde mich aber wenn es noch mal schöner sein soll an den Thread hier erinnern.

Vielen Dank!

Falk
Bitte warten ..
Ähnliche Inhalte
Ubuntu

Mit xargs Werte in einer Datei ändern?

gelöst Frage von Ch.MorgensternUbuntu4 Kommentare

Hallo zusammen, ich bin relativ neu was Linux angeht, möchte/muss jetzt aber mit Linux arbeiten. Folgende Aufgabe habe ich ...

Batch & Shell

Hilfe bei Skript - wenn eine Datei Datum x hat - alle löschen

Frage von paddy89Batch & Shell9 Kommentare

Hallo zusammen, ich bräuchte mal Unterstützung. Ich brauche ein Skript/Batch, was in einem Ordner Dateien nach Erstellungsdatum überprüft. Ist ...

Batch & Shell

Doppelte Dateneinträge per Batch aus Datei löschen? HILFE

gelöst Frage von freshman2017Batch & Shell7 Kommentare

Liebe Gemeinde, Ihr konntet mir als Anfänger sehr gut helfen. Ich brauche jetzt aber noch Hilfe bei der doppelte ...

PHP

PHP - Eigene Datei unter dem Hintern löschen und neu erstellen?

gelöst Frage von StefanKittelPHP6 Kommentare

Hallo, ich arbeitet gerade an einem kleinen Skript in PHP für einen Kunden. Das Skript besteht aus ca. 6 ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 2 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement17 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...