4
respostas

Looping de Diretorio com Pastas com Caracteres Especiais

Pessoal, Boa Noite !

Com o script abaixo não consigo acessar diretorio com caracteres especiais como espaço, barra, chaves, tem como fazer o shell ignorar e acessar o diretorio ???

#!/bin/bash

acessa_pasta()
{
    cd $1

    for pasta in *
    do
        caminho=$(find /home/pi/Downloads -name $pasta)

        if [ -d $caminho ]
        then
            acessa_pasta $caminho
        else
            echo "$caminho"
        fi
}

acessa_pasta /home/pi/Downloads
4 respostas

Oi Bruno, não tenho muita experiência com o shell, mas acho que se você envolver a variável entre aspas duplicas, você resolve esse problema, não?

Wanderson, Boa Noite !

Desculpa a demora, não funciona colocando aspas duplas...

Puxa, estranho, não sei o que pode ser, vou procurar alguém que possa te ajudar melhor que eu...

Boa Tarde Wanderson ! beleza ?

Entao, eu tentei fazer expressão regular e não funcinou, segue código:

#!/bin/bash

acessa_pasta()
{
    cd $1

    for pasta in *
    do
        echo $pasta
        espaco="${str%[[:space:]]*}"

        if [[ "$pasta" =~ $espaco ]]
        then
            arquivo=$(sed 's/\./_/g' <<< "$pasta")
            arquivo=$(sed 's/ /_/g' <<< "$arquivo")
            echo $arquivo
        else
            echo "Sem Espaços"
        fi

        caminho=$(find /home/pi/Downloads/Series/ -name $arquivo)

        if [ ! -d $pasta ]
        then
            acessa_pasta "$caminho"
        else    
            echo "$caminho"
        fi
    done
}

acessa_pasta /home/pi/Downloads/Series/

então resolvi usar Python para fazer isso, criei um Shell Script que executa Python

Segue Código Shell:

#!/bin/sh

python3 move_torrents.py

Segue Código Python:

#-*- coding:utf-8 -*-
import os
import glob

diretorio = '/home/pi/Downloads/Series/'

def listar(diretorio):

        if os.path.isdir(diretorio):

            os.chdir(diretorio)

            for arquivo in glob.glob("*"):

                if os.path.isdir(diretorio + arquivo):
                    listar(diretorio + arquivo + '/')
                else:
                    print ('arquivo: ' + diretorio + arquivo)
        else:
            print ('arquivo: ' + diretorio)

if(__name__ == "__main__"):
    listar(diretorio)