Como copiar arquivos do diretório atendendo a determinados critérios

0

Estou tentando copiar arquivos do diretório A para o diretório B . Mas eu quero copiar apenas arquivos que têm tamanho menor do que X e não têm extensões de arquivo especificadas no arquivo extension.txt .

Meu principal problema aqui é que não quero excluir arquivos indesejados após o processamento - eu quero copiar apenas os arquivos necessários, usando bash script.

Alguma ideia?

    
por user166182 17.04.2016 / 13:25

2 respostas

2

Uma versão estendida da resposta do @ mihver1. Dê uma olhada em man find se você quiser entender isso completamente.

#!/bin/bash
X=1000c # or what ever your size limit is
find_args=()
for ext in $(cat extensions.txt); do
  find_args=( "${find_args[@]}" -o -name "*.$ext" )
done
find_args=( -type f -size -$X -not \( -false "${find_args[@]}" \) )
# first try it
find directory_A "${find_args[@]}" -print
# if that looks fine, copy the files
find directory_A "${find_args[@]}" -exec cp {} direcotry_B +
    
por 17.04.2016 / 17:37
0
# assuming that extensions.txt looks like:
# *.txt
# *.csv
# *.img

X=your_size
pushd directoryA
rsync --exclude-from=extensions.txt $(find . -type f -size -${X}c) directoryB/
popd
    
por 17.04.2016 / 14:58