Linux: Copie todos os arquivos por extensão para um único diretório

6

Estou tentando copiar todos os arquivos *.tif de ./old para o ./new. Em ./old eu tenho muitos subdiretórios com arquivos diferentes, e em ./new eu preciso apenas de arquivos TIF, sem a árvore de pastas. Então, eu tentei cp -vR ./old/*.TIF ./new e recebi um erro:

No such file file or dirrectory "./old/*.TIF"

O que estou fazendo de errado?

    
por Der Hochstapler 02.11.2012 / 10:26

3 respostas

9

Use a localização para este find . -name "*.TIF" -exec cp {} new \;

Então find é usado para encontrar arquivos. O comando está dizendo find arquivos começando aqui . onde o nome do arquivo -name termina em .tif lembre-se das aspas duplas para expansão de shell. Então, para encontrar todos os arquivos tif é simplesmente.

find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif

Em seguida, usamos -exec para fazer algo com arquivos, neste caso cp arquivos encontrados {} para o diretório de destino new seguido por um ponto e vírgula com escape \;

    
por 02.11.2012 / 10:30
2

Deveria ser assim. Você tem que entrar no diretório antigo:

cd old
cp -R *.tif ../new
    
por 02.11.2012 / 10:32
0

no diretório antigo (direto) você pode não ter arquivos .tif.

Além disso, você pode obter uma lista de arquivos e copiá-los usando um script simples

find /old -type f | xargs grep *.tif fornecerá a lista

você pode fazer como

for i in 'find /old -type f | xargs grep *.tif' 
do
cp $i /new
done;
    
por 02.11.2012 / 10:31

Tags