[Ubuntu-BR] Copiar arquivos de determinada extensão recursivamente

romano bruno em tanervoso.com.br
Sexta Junho 12 23:22:55 UTC 2009


Se vc quiser melhorar isso vc pode criar uma função recursiva que vai 
entrando em diretórios.

tipo vc pode usar função.

esse script ai vai entrando recursivamente de diretório em diretório e 
printa o nome do diretório. Vc pode usar a idéia para copiar 
recursivamente o que vc quer.
entra no diretório e copia todos os .jpg para onde vc quiser.

Bom no que eu testei aqui deu certo. Precisa ver se não tem erros.
o set -x no inicio é uma espécie de debug.

##inicio do script
#! /bin/bash

#set -x

funcao()
{
	cd $1
	echo "`pwd`/$1"
	for dir in `ls`
	do
		if [ -d $dir ]; then
			funcao $dir
		fi
	done
	cd ..
}

funcao /home/romano/Desktop

##final do script

Bruno Donate Magalhães wrote:
> Pessoal,
> 
> Consegui resolver, sei que a solução não é a melhor pois passa por 
> caminhos que não existem, mas não achei um jeito mais rápido de fazer...
> 
> fiz o seguinte, baseado na solução do meu xará Bruno Romano:
> 
> "
> m4a=/media/Dados/Musica/Convertidas/Musica
> 
> SAVEIFS=$IFS
> IFS=$(echo -en "\n\b")
> 
> for i in *; do echo "$i"; cp -va $i/*.jpg $m4a/$i; for j in $i/*; do 
> echo "$j"; cp -va $j/*.jpg $m4a/$j; for k in $j/*; do echo "$k"; cp -va 
> $k/*.jpg $m4a/$k; done; done; done;
> 
> IFS=$SAVEIFS;
> "
> 
> Com esse código eu entro até o terceiro nível de subpastas...
> 
> Att,
> --
> 
> Bruno Donate Magalhães
> 
> http://brogzinho.blogspot.com <http://www.brogzinho.blogspot.com/>
> 
> brunodonate em gmail.com <mailto:brunodonate em gmail.com>
> 
> (11) 8557-5577
> 
> 
> 
> Bruno Donate Magalhães escreveu:
>> Bruno,
>>
>> Não deu certo... o problema é que o nome do jpg não é o mesmo nome da 
>> pasta... eu até tentei com *.jpg mas não deu certo... além disso acho 
>> que este método nçai vai entrar em uma sub-subpasta que existem várias...
>>
>> Alguma idéia?
>>
>> Desde já agradeço a força...
>>
>> Att,
>> -- 
>>
>> Bruno Donate Magalhães
>>
>> http://brogzinho.blogspot.com <http://www.brogzinho.blogspot.com/>
>>
>> brunodonate em gmail.com <mailto:brunodonate em gmail.com>
>>
>> (11) 8557-5577
>>
>>
>> Se eu entendi direito vc pode fazer isso
>>
>>> m4a=/tmp/m4a
>>> for i in `ls`; do echo "copiando $i"; cp $i/$i.jpg $m4a/$i/$i.jpg; 
>> done;
>>
>>
>> ou gera um m4a.sh
>>
>> e executa ele com isso ai em cima.
>>
>>
>> Bom vc deve executar esse comando na pasta onde vc tem um monte de 
>> pastas de músicas, caso alguma não tenha sua respectiva com o mesmo 
>> nome na m4a então ai dar no such file or directory
>>
>> e no m4a=/tmp/m4a vc substitui pelo local onde esta sua pasta com as 
>> subpastas contendo as musicas.
>>
>> é isso...
>>
>> Bruno Romano.
>>
>>
> 





More information about the ubuntu-br mailing list