KSH: cp baseado somente no tamanho do arquivo

2

Eu gostaria de escrever um pequeno script copiando de um diretório A para o diretório B todos os arquivos com a extensão .log . Então, no meu diretório A, eu:

ls : 
a.log
b.log
c.log

Aqui está o pseudo-código que gostaria de implementar:

foreach *.log x do :
    if [stat -c %s pk_copylogs < 10485760]; then 
          cp  A/x  B/x       
    else
          read vANSWER?" >> File x is bigger than 10 MB, would you like to copy it anyway ? Type YES or NO : "
          if [ $vANSWER = "YES"]; then
              cp A/x B/x
          fi
    fi

Meu principal problema aqui é encontrar uma maneira de implementar meu foreach *.log . Como eu posso fazer isso ?

    
por user1058398 21.11.2013 / 09:13

1 resposta

3

Você pode fazer isso em dois comandos:

find A -name "*.log" -size -10485760c -exec cp {} B/ +
find A -name "*.log" -size +10485760c -exec cp -i {} B/ +

O primeiro encontra arquivos menores que 10485760 e copia indiscriminadamente. O segundo encontra arquivos maiores que 10485760 e copia interativamente, solicitando cada cópia.

Coloque-os em um shell script ou função para que você possa executá-lo com um único comando, se quiser.

    
por 21.11.2013 / 09:34

Tags