Exclui arquivos se a condição for atendida

0

Eu tenho a seguinte árvore de diretórios:

/Directories/
/Directories/somedir/somefile.mkv
/Directories/somefile.rar

Estou tentando encontrar uma maneira de excluir o arquivo .rar se o arquivo .mkv existir e for maior que 1 GB.

Eu usei find -type f -size +1000000k -name "*.mkv" para encontrar os arquivos. Eu então presumo que -exec ou | xargs poderia ajudar com o resto, mas eu não sei como sair da saída do find antes de passá-lo para rm . No meu cenário, a saída seria /Directories/somedir/somefile.mkv e o comando passado para rm seria Directories/*.rar

Posso fazer isso com -exec ou xargs . Existe uma solução mais elegante?

    
por Morgan 31.12.2015 / 12:58

1 resposta

1

Eu não acho que ambas as condições possam ser verificadas dentro do mesmo comando find . Você pode, no entanto, fazer um pequeno script que faça as verificações necessárias e exclua o arquivo, se estiver satisfeito.

#!/bin/bash

for file in 'find -type f -size +1000000k -name "*.mkv"'; do
  # This would remove the mkv extension
  noext=${file::-4}

  # Parts of directories
  parentdir='echo $file | cut -d'/' -f2' # This would return 'Directories'

  if [ -e "./$parentdir/$noext.rar" ]; then
     rm -f "./$parentdir/$noext.rar"
  fi
done

Não testado, mas seria algo muito semelhante a isso.

    
por 31.12.2015 / 13:04