Como posso iterar os arquivos em um determinado diretório e verificar se o arquivo existe?

0

Aqui está a lista de arquivos em um determinado diretório;

a_object_1.0.zip
file_name_conf_1.1.zip
anim_dup_1.1.zip

Iterar os arquivos em um determinado diretório e verificar se o arquivo corresponde ao padrão de arquivo da lista de arquivos, descompactar e renomear cada arquivo com algum prefixo ( cx_a_object_1.0.zip, cx_file_name_conf_1.1.zip, anim_anim_dup_1.1.zip )

    
por itgeek 18.09.2018 / 15:58

2 respostas

1

#!/bin/bash
for szFile in /var/tmp/*.zip;
do 
  unzip "$szFile";
  mv "$szFile" "Prefix_"$(basename -- "$szFile")
done

irá:

  • iterar todos os arquivos zip em /var/tmp
  • extraia-os
  • adicione um prefixo
  • mova-os para o diretório atual.
por 18.09.2018 / 16:17
0

Aqui está um exemplo usando o find.

find somedir/ -type f -name 'some.zip' -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;

Remova echo quando estiver satisfeito com o resultado

Ou crie uma função com um argumento local e passe o nome do arquivo como argumento para a função da seguinte forma:

cfind() {
 local name=$1
 find somedir/ -type f -name "$name" -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;
    }

Chame como

cfind myfilename.zip
    
por 18.09.2018 / 16:27