fazer comapctação de sub-diretórios de um diretório separadamente

Iniciado por olinto, 29 de Julho de 2019, 19:12

tópico anterior - próximo tópico

olinto

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

Antônio Olinto
Linux User 455618
Ubuntu User 31203

olinto

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


Antônio Olinto
Linux User 455618
Ubuntu User 31203