Script shell: Copie a pasta com um novo nome

0

Estou tentando escrever este script de shell para criar no diretório pai uma cópia das pastas encontradas no diretório atual. Até agora, escrevi isto:

for folder in *; do

    mkdir ../$folder;
done

Gostaria de fazer uma operação "localizar e substituir" no nome da pasta, para que, por exemplo, a pasta chamada graphics-HD seja copiada como graphics-SD

Desculpe se é simplista, mas eu absolutamente não tenho experiência com shell script / unix.

Muito obrigado! J.

    
por Jem 21.11.2012 / 12:07

2 respostas

2

A adição de uma barra ao curinga restringe a saída aos diretórios

for dir in */; do ...

Você vai querer ler sobre expansão do parâmetro bash - - você pode encontrar e substituir dentro do shell:

newname=${dir/%-HD/-SD}
    
por 21.11.2012 / 13:00
1

não há nada de errado com o que você tem, exceto que ele criará pastas de arquivos e pastas. Você pode verificar se toda pasta é um diretório com [-d $ folder] ou usar o find. Na pasta em que você tem pastas que deseja copiar:

find -type d -maxdepth 1 -exec mkdir "../{}" \+ 

Para pesquisar e substituir, há renomeação de rename.berlios.de . você pode renomear todas as pastas em algum lugar assim:

renamexm -s/-HD/-SD/ 'find . -type d -maxdepth 1'
    
por 21.11.2012 / 12:34