Clonar diretórios de um diretório passado por parâmetro e colocá-los em outro diretório passado como

1. Clonar diretórios de um diretório passado por parâmetro e colocá-los em outro diretório passado como

antonio jose da silva almeida
ajsalmeida

(usa Outra)

Enviado em 04/10/2013 - 00:07h

Olá gente, estava fazendo este pequeno script, para fazer o descrito aí em cima. Mas tem um problema, não está criando os diretórios recursivamente como deveria. Alguém tem ideia de como posso melhorar esse script??
Valeu


#!/bin/bash

if [ ! -d $2 ]; then #testa se o diretório existe

mkdir $2 # se não existir cria
else

find $1 -type d > saida
numeroDeLinhas=$(wc -l saida | cut -f1 -d" ") #pega somente o numero de linhas

for (( i=1; i < $numeroDeLinhas; i++ ))#faz isso até o fim das linhas
do

linha=$(sed -n $i' p;' saida | cut -f2-8 -d"/") #pega da linha 2 a 8 dos diretorios
mkdir -p /home/alunos/antonio/$2/$linha
done
rm -f saida
fi



A, e mais uma coisa,não posso compiar o primeiro diretório passado como parâmetro. Somente suas sub pastas. Arquivos também não podem ser copiados. Vlw gente


  


2. Re: Clonar diretórios de um diretório passado por parâmetro e colocá-los em outro diretório passado como

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 04/10/2013 - 13:55h

Colega, explique detalhado o que o seu script faz e mostre como executá-lo, pois pelo que vi exige 2 parâmetros!


3. Re: Clonar diretórios de um diretório passado por parâmetro e colocá-los em outro diretório passado como

antonio jose da silva almeida
ajsalmeida

(usa Outra)

Enviado em 04/10/2013 - 13:58h

Nossa, pensei que tinha escrito, acho que esqueci. Desculpe. Mas realmente ele exige dois parâmetros, o primeiro vai ser o diretório o qual eu vou copiar as subpastas(somente as subpastas). O segundo parâmetro será onde eu vou criar os diretórios clonados do diretório passado como primeiro parâmetro. Na realidade você tem que passar os dois parâmetros quando for chamá-lo:

./script.sh diretorioQueteraAsSubPastasCopiadas diretorioQueReceberaOsClones


4. Re: Clonar diretórios de um diretório passado por parâmetro e colocá-los em outro diretório passado como

antonio jose da silva almeida
ajsalmeida

(usa Outra)

Enviado em 04/10/2013 - 14:04h

Ele faz um find que lista todos os diretórios, depois joga a saida no arquivo "saida", entao, eu pego o numero de linhas,
e dentro de um for eu leio os diretórios de um por um e vou criando. Já que o caminho nesse caso iria iniciar com o primeiro parâmetro, Ex /$1/subpasta1/subpasta2, então eu necessito pegar somente o nome das subpastas, e é isso que o cut que está dentro do for faz. Depois disso eu vou criando os diretórios com o mkdir -p dentro do segundo diretório passado como parâmetro $2.


5. Re: Clonar diretórios de um diretório passado por parâmetro e colocá-los em outro diretório passado como

Fernando
phoemur

(usa Debian)

Enviado em 04/10/2013 - 14:33h

Uma forma rudimentar seria:


#!/bin/bash

[ "$#" -lt 1 -o "$#" -gt 2 ] && exit 1
[ ! -d "$1" ] && exit 1
mkdir -p "$2" # Só vai criar se não existir
find "$1" -type d | sed 's/^\.//g' | xargs -L1 -t -Istring mkdir -p ${2%/}string


é isso ?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts