Autor Tópico: fazer comapctação de sub-diretórios de um diretório separadamente  (Lida 6312 vezes)

Offline olinto

  • Usuário Ubuntu
  • *
  • Mensagens: 139
    • Ver perfil
Prezad@s

Quero fazer um script que gere vários arquivos rar, um para cada sub-diretório de um diretório. Cada arquivo rar gerado deve ter o nome  do sub-diretório contido nele. Os arquivos rar criados devem ficar no diretório principal, não dentro dos sub-diretórios.

Por exemplo dentro do diretório "documentos" tenho sub-diretórios "planilhas projeto 1", "planilhas projeto 2", "textos projeto 3", "fotos". Quero que sejam criados no diretório "documentos" os arquivos "planilhas projeto 1.rar", "planilhas projeto 2.rar", etc. contendo os arquivos dos respectivos diretórios compactados.

Fiz o seguinte:

# faz o rar de cada diretório
for diret in `ls -d */`; do
 echo "compactando diretorio $diret"
 rar a nome_do_rar $diret
done

Não estou conseguindo escrever o script de um jeito que fique explícito que nome_do_rar deva ser o nome do diretório que está sendo compactado. Quando coloco "rar a $diret $diret" é criado um arquivo ".rar" dentro de cada um dos diretórios.

O comando rar é simples: rar "a = adiciona" "arquivo de saída" "diretório a ser compactado".

Agradeço muito qualquer sugestão.

Abraços

Antônio Olinto

« Última modificação: 03 de Agosto de 2019, 07:37 por olinto »
Antônio Olinto
Linux User 455618
Ubuntu User 31203

Offline olinto

  • Usuário Ubuntu
  • *
  • Mensagens: 139
    • Ver perfil
Re:fazer comapctação de sub-diretórios de um diretório separadamente
« Resposta #1 Online: 30 de Julho de 2019, 22:54 »
Olá pessoal,

Depois de bater um pouco a cabeça consegui algum avanço.

Eu não sei nada de bash, normalmente escrevo em R ou SQL. Segui a lógica que seguiria nessas linguagens e procurei na internet os comandos.  Estou no seguinte estágio:

#!/bin/bash
# rar para diretórios

for diret in $(ls -d */); do
 filename=${diret/%'/'/}
 echo "compactando diretorio $diret"
 rar a "${filename/%'/'/}" "$diret"
done


O script funciona para sub-diretórios cujo nome não possui espaços. Quando há espaço no nome do sub-diretório o rar não é criado. O problema está no filename=${diret/%'/'/}

Achei um site de checagem de linguagem interessante https://www.shellcheck.net/ mas mesmo assim não foi.

Bem, continuo aceitando sugestões.

Sds

Antônio Olinto


« Última modificação: 03 de Agosto de 2019, 07:37 por olinto »
Antônio Olinto
Linux User 455618
Ubuntu User 31203