como logar arquivos encontrados antes de deletá-los

1

Existe uma maneira de registrar um nome de arquivo antes de excluí-lo? Eu estou fazendo um png para conversão de jpg e preciso excluir o arquivo png antigo, mas eu gostaria de registrá-lo primeiro. ... ou se eu pudesse registrar o que foi encontrado.

#!/bin/bash

PIXPATH=~/test-pix/

find $PIXPATH -type f -name '*.png' -exec mogrify -format jpg {} \;

rm -rf $PIXPATH*.png > list-of-pngs.txt
    
por vector 01.06.2017 / 19:44

2 respostas

2

Experimente esta abordagem:

#!/bin/bash
PIXPATH=~/test-pix/
find "$PIXPATH" -type f -name '*.png' \
  -exec mogrify -format jpg {} \; \
  -delete \
  -print \
  > list-of-pngs.txt

Eu o dividi em várias linhas para torná-lo mais claro, mas você pode fazer isso em uma única linha.

Eu também fiz algumas correções e adições para garantir que os scripts funcionem como esperado se, por exemplo, $ PIXPATH contiver espaços. Além disso, você não faz rm -r em arquivos .

    
por 01.06.2017 / 20:42
1

Você pode fazer várias coisas para cada arquivo encontrado, por exemplo:

  • Múltiplos -exec ... \;
  • -print para imprimir o caminho
  • -delete para excluir

Por exemplo:

#!/bin/bash

PIXPATH=~/test-pix/

find "$PIXPATH" -type f -name '*.png' -exec mogrify -format jpg {} \; \
  -print -delete | tee list-of-pngs.txt

Eu divido em duas linhas para torná-lo mais claro, mas você pode fazer isso em uma única linha.

Eu usei tee para que você veja o que está sendo escrito, mas você pode substituir por um simples redirecionamento com > .

    
por 01.06.2017 / 22:22

Tags