Apague arquivos .pdf somente se os arquivos .xlsx no diretório tiverem o mesmo nome de arquivo?

3

Tenho pastas com centenas de arquivos pdf e xls(x) que foram exportados em massa de sistemas legais de descoberta eletrônica. Os nomes de arquivos nessas exportações correspondem a # #, como ABCD_00000001.pdf , ABCD_00000002.pdf , ..., ABCD_00002000.pdf . Essas exportações em massa incluem um arquivo pdf em branco para todos os arquivos xls(x) - com ambos os mesmos nomes de arquivo. Por exemplo, ABCD_00000005.xlsx é o arquivo xlsx que foi produzido no sistema de descoberta e ABCD_00000005.pdf é um arquivo PDF em branco irrelevante que foi criado na exportação em massa.

Esses arquivos .pdf estranhos provavelmente resultam de um erro do usuário por parte das pessoas que executam essas exportações em massa, mas geralmente não tenho controle sobre esse lado do processo. Então, eu queria saber se há alguma maneira relativamente simples de excluir esses arquivos .pdf irrelevantes, sem forçar alguém a consultá-los manualmente.

    
por ck_chicago 10.08.2018 / 18:26

2 respostas

6

Faça o loop sobre os arquivos pdf, use a expansão de parâmetro para extrair o nome da base:

#!/bin/bash
for pdf in *.pdf ; do
    basename=${pdf%.pdf}
    if [[ -f $basename.xls || -f $basename.xlsx ]] ; then
        rm "$pdf"
    fi
done

Atualização: Eu tenho a lógica para trás, deve ser corrigido agora. Desculpe.

    
por 10.08.2018 / 18:31
3

Faça um loop sobre os arquivos .xls (x) e remova arquivos PDF correspondentes.

for xls in *.xls* ; do
    /bin/rm -f "${xls%.xls*}"".pdf"
done

Se não houver um PDF correspondente, isso não afetará nada.

    
por 10.08.2018 / 19:04