Archlinux - Excluir arquivos em subdiretório diferente com nome de data

0

Preciso da sua ajuda para encontrar uma maneira de excluir alguns arquivos em vários subdiretórios com base no formato de data no nome.

Eu uso este script no 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

Com o script, tenho isto:

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

E eu quero excluir automaticamente o mkv com mais de 1 semana + 1 dia.

Eu vi isto:

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

É bom para a data de criação, mas não para a data nomeada do arquivo.

Você pode me ajudar? Obrigado.

    
por Tweek 07.09.2017 / 23:57

1 resposta

0

Você precisa comparar o prefixo do nome com uma data. Você pode obter o item de comparação facilmente com: date -d '-10 days' +%Y%m%d . Então você faz um loop pelos seus arquivos:

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

Se você tiver mais níveis de subdiretório, adicione mais estrelas no padrão for : for f in */*/*.mkv

( aviso: não testado )

    
por 08.09.2017 / 00:28