Archlinux - Löschen Sie Dateien in einem anderen Unterverzeichnis mit dem Datumsnamen


0

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

Ich benutze 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 das mkv, das älter als 1 Woche + 1 Tag ist, automatisch löschen.

Ich habe folgendes gesehen:

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

Es ist gut für das Erstellungsdatum, aber nicht für das angegebene Datum der Datei.

Kannst du mir helfen? Vielen Dank.

Antworten:


0

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 durchlaufen Sie Ihre Dateien:

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

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

( Warnung: ungetestet )


Danke für die Antwort. Funktioniert aber nicht, da ich Unterordner verwende ...
Tweek

Ich habe versucht, mit einer anderen Ordnerstruktur, ich habe diese ... Link
Tweek

Aktualisierte Antwort: Doppelte Anführungszeichen im rmBefehl hinzugefügt und mehr Sterne verwendet, wenn mehr Verzeichnisebenen vorhanden sind.
Xenoid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.