Shell Scripting: Excluindo ou movendo arquivos de um diretório que corresponda a nomes de arquivos de outro diretório

2

Eu tenho um problema muito específico e estranho para resolver. Estou trabalhando como assistente de pesquisa e tenho produzido uma tonelada de números. Em um diretório, eu despejo .pngs para ver casualmente (espaço limitado aqui) e no outro, eu despejo os arquivos .ps e .pdf para usar no látex. Tudo é automatizado com o matlab. Na pasta .png, eu apaguei periodicamente muitos arquivos que não considerei úteis, mas o outro é uma bagunça.

Como posso dizer ao unix para ir através do diretório .ps, e para cada arquivo, procure no diretório .png por nomes de arquivos que correspondam e, se eles não corresponderem, mova o arquivo para um diretório diferente (que É provável que mais tarde apague)?

Existe algum comando que possa ser útil aqui?

    
por Luke Davis 30.04.2015 / 22:55

1 resposta

3

Uma maneira crua de fazer isso:

for f in /path/to/PDFs/*.pdf; do
    base=$( basename "$f" .pdf )
    if [ ! -f /path/to/PNGs/"$base".png ]; then
        mv "$f" /path/to/garbage/
    fi  
done
    
por 30.04.2015 / 23:11