Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[Gelöst] Stapel-Löschen von Dateien mit Leerzeichen im Namen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
RaguKro
Newbie
Newbie
Beiträge: 2
Registriert: 17. Sep 2021, 17:44
Kontaktdaten:

[Gelöst] Stapel-Löschen von Dateien mit Leerzeichen im Namen

Beitrag von RaguKro »

Hallo,

ich komme mit einem kleinen Problem nicht weiter:

Ich will per batch ältere Dateien löschen:

Code: Alles auswählen

pushd ${BACKUP_PFAD}; ls -tr "$BACKUP_PFAD/$BACKUP_NAME"* | head -n -${BACKUP_ANZAHL} | xargs rm; popd
Das Problem ist, dass im BACKUP_NAME Leerzeichen sind und deshalb der rm Befehl aus einem Namen mehrere Dateien macht, die er dann nicht findet.

Mein Versuch mit

Code: Alles auswählen

| xargs -0 rm
führt auch nicht zum Ziel - offenbar wird ein

Code: Alles auswählen

$'\n'
als Trenner verwendet. mit "xargs -d" kann ich aber nur ein Zeichen als Trenner definieren.

Wer kann das Rätsel lösen?

Vielen Dank
Zuletzt geändert von RaguKro am 18. Sep 2021, 08:44, insgesamt 1-mal geändert.
RaguKro
Newbie
Newbie
Beiträge: 2
Registriert: 17. Sep 2021, 17:44
Kontaktdaten:

Re: Stapel-Löschen von Dateien mit Leerzeichen im Namen

Beitrag von RaguKro »

ok, habe das Problem selber gelöst:

xargs -d akzeptiert als Trennzeichen zwar nur genau ein Zeichen, aber '\n' wird als ein Zeichen in Linux gewertet, Hex 0a.

der richtige Code lautet daher:

Code: Alles auswählen

ls -tr ${BACKUP_PFAD}/${BACKUP_NAME}* | head -n -${BACKUP_ANZAHL} | xargs -d '\n' rm
Antworten