cópia específica dos arquivos

0

Eu tenho arquivos e diretórios que têm o mesmo sufixo (de 0 a 310). e quero copiar file(0) para directory(0) , file(10) para directory(10) e continuar até file(310) para directory(310) .

Existe alguma maneira de copiar todos eles ao mesmo tempo?

    
por Abuzer Alhamza 24.08.2017 / 19:23

1 resposta

0

Faça um loop sobre os arquivos e mova-os para seus respectivos diretórios,

for FILE in *; do 
if [[ -f "$FILE" ]]; then 
    echo mv "$FILE" "dir${FILE##file}";
fi
done
  • if [[ -f "$FILE" ]]; then , verifique o $FILE se for um arquivo -f não é um diretório -d .
  • ${FILE##file} , (cut-up-last-prefix) retira file prefix do fileName e mantém apenas as partes numéricas.
  • Você precisa pedalar de echo para execução a seco para ter movimento real.

Exemplo de saída:

file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3

Atualização: Caso seu nome de arquivo tenha um sufixo como file##.xyz , você pode usar o script da seguinte forma:

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    dname="${FILE##file}";
    echo mv "$FILE" "dir${dname%.inp}";
fi
done

Esta parte ${dname%.inp} do código (recortado-primeiro-sufixo) retira .inp do final do nome do arquivo, o que ${FILE##file} parte já tira seu prefixo file antes, portanto, haverá apenas peça numérica produzir.

Ou até mesmo você pode usar da seguinte maneira.

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done
    
por 24.08.2017 / 19:26

Tags