Move o arquivo somente se existir outro arquivo com sufixo diferente

0

Script atingiu walltime antes de concluir; cria arquivos de um conjunto inicial de arquivos de entrada em arquivos de saída com sufixo diferente, por exemplo,

arquivo1.ext - > file1.oxt

(note que as extensões fornecidas são arbitrárias).

Como faço para mover apenas os arquivos de entrada para os quais já existem arquivos de saída em um diretório separado antes de executar novamente o script inicial? Algo como 'arquivo mv somente se o nome de arquivo (arquivo) .oxt existir'. Poderia fazer isso é outras línguas, mas o meu conhecimento de Bash é extremamente carente aqui.

Obrigado!

    
por chris 06.10.2017 / 15:05

2 respostas

0

Existe o seu script bash:

for file in 'ls *.old'
do
    BASE="${file%.*}"
    if [[ -e ${BASE}.new ]]
    then
        mv $file /yourdir/
    fi
done

Apenas substitua .old e .new por seus sufixos e yourdir com seu diretório real.

    
por 06.10.2017 / 15:30
0

encontre + solução bash :

find . -type f ! -name "*.oxt" -exec bash -c 'f=$1; 
        fp="${f%.*}"; [[ -f "$fp.oxt" ]] && mv "$f" dest_dir/' _ {} \;
  • f=$1 - o caminho completo

  • fp="${f%.*}" - caminho de arquivo com extensão removida (sem extensão)

  • [[ -f "$fp.oxt" ]] - verifique se o respectivo arquivo de "saída" existe

  • mv "$f" dest_dir/ - mova o arquivo inicial para o diretório dest_dir

por 06.10.2017 / 15:30

Tags