Como copiar uma certa quantidade de arquivos classificados? (por exemplo, 11 GB)

1

Eu gostaria de copiar um total de 11 GB de arquivos (todos do tipo .mp3 para essa questão) da pasta ~/ABC/ para ~/DEF/ . E eu gosto de fazer isso para os arquivos classificados por data / última edição no ABC (ou seja, o arquivo modificado mais recentemente deve ser copiado primeiro).

Os nomes dos arquivos contêm espaços e / ou caracteres como & , . e / e similares.

Eu olhei em volta um pouco e até agora, e usando código de questões (um pouco) relacionadas não parece imho sensato (não que eu seria um bom juiz de qualquer maneira).

Como posso fazer isso? :)

    
por henry 04.06.2017 / 20:31

1 resposta

0

Tenho certeza de que há uma maneira melhor de fazer isso, mas espero que isso ajude por agora. LIMIT é a quantidade para copiar em kilobytes.

#! /bin/bash 

LIMIT='11534336'
size='0'

if [[ -e $1 && -d $2 ]];then
  echo "copying contents from $1 to $2"
else
  echo "Usage: $0 SOURCE DEST"
  exit
fi  

for i in $(ls -t $1); do
  var="$(echo $(du -s $(realpath $1/$i)))"
  IFS=" " read var1 var2 <<< "$var"
  let "size += $var1"
  if [[ $size -lt $LIMIT ]];then
    echo "copying " $var2 "to $2"
    cp -r $var2 $2
  else
    exit
  fi  
done
    
por 05.06.2017 / 20:44

Tags