Archlinux - Löschen Sie Dateien in verschiedenen Unterverzeichnissen mit Datumsnamen

401
Tweek

Ich brauche Ihre Hilfe, um einen Weg zu finden, einige Dateien in mehreren Unterverzeichnissen basierend auf dem Datumsformat im Namen zu löschen.

Ich verwende dieses Skript in youtube-dl:

youtube-dl --yes-playlist --download-archive archive.txt --continue --ignore-errors --no-overwrites --dateafter now-1week -o '%(uploader)s/%(upload_date)s - %(title)s' -a rss.txt 

Mit dem Skript habe ich folgendes:

Videos │ rss.txt │ archive.txt  │ └───Artiste_Youtube_01 │ │ 20170906 - Title.mkv │ │ YYYYMMDD - Title.mkv |  └───Artiste_Youtube_02 │ YYYYMMDD - Title.mkv │ YYYYMMDD - Title.mkv 

Und ich möchte die mkv automatisch löschen, die älter ist als 1 Woche + 1 Tag.

Ich habe das gesehen:

find ./my_dir -mtime +10 -type f -delete 

Dies gilt für das Erstellungsdatum, nicht jedoch für das genannte Datum der Datei.

Kannst du mir helfen? Vielen Dank.

0

1 Antwort auf die Frage

0
xenoid

Sie müssen das Namenspräfix mit einem Datum vergleichen. Sie können den Vergleichspunkt bekommen einfach mit: date -d '-10 days' +%Y%m%d. Dann überlaufen Sie Ihre Dateien:

cutDate=$(date -d '-10 days' +%Y%m%d) for f in */*.mkv do prefix=$(sed -r 's:.*/([0-9]) -.*:\1:' <<<"$f") [[ $prefix < $cutDate ]] && rm "$f" done 

Wenn Sie mehr Unterverzeichnisebenen haben, fügen Sie dem forMuster mehr Sterne hinzu : for f in */*/*.mkv

( Warnung: nicht getestet )

Danke für die Antwort. Funktioniert aber nicht, weil ich Unterordner verwende ... Tweek vor 7 Jahren 0
Ich habe es mit einer anderen Ordnerstruktur versucht, ich habe diese ... [link] (https://framapic.org/1OO50VrhvtI5/3Nq7IHdQMM2Y) Tweek vor 7 Jahren 0
Aktualisierte Antwort: Der Befehl `rm` hat doppelte Anführungszeichen hinzugefügt und bei mehr Verzeichnisebenen mehr Sterne verwendet. xenoid vor 7 Jahren 0