Deletar diretório que contém espaço [RESOLVIDO]

1. Deletar diretório que contém espaço [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 07/04/2020 - 19:20h

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


  


2. MELHOR RESPOSTA

Rogerio
RogerDez

(usa Outra)

Enviado em 08/04/2020 - 02:53h

Realmente o comando abaixo não faz sentido:
rm -rd /home/usuario/Documentos/*' '*

por que a opção '-d', como você bem mencionou, somente diz que, dentre os diretórios listados, remover somente os que estão vazios..
mas essa opção não proibe o 'rm' de remover arquivos normais ou diretórios com arquivos se eles estiverem listados, especialmente se você usar a opção '-r' junto..

foi mal, esses detalhes do 'rm' causam muita confusão e por isso sempre pode acontecer erros..

então tem que ser aquela segunda opção que eu citei mesmo, acho que é a melhor interface.

outro método menos eficiente seria:
entre no diretório mãe que tem os arquivos, e depois:

for arq in */ ; do
[[ "$arq" = *\ * ]] || continue
rm -r "$arq"
done


usando globs mais uma vez, a estrela com a barra no final '*/' vai listar todas as pastas, especificamente.
depois fazemos um teste em um for-do loop, se no nome da pasta tem um espaço em branco,
aqui o glob do comando test é uma estrela (qualquer caracter), uma barra invertida que meramente vai escapar o espaço, e depois mais uma estrela. mas este glob poderia ser assim tb [[ "$arq" = *' '* ]]
se não tiver um espaço em branco, ele continua o loop com o próximo ítem,
se tiver espaço em branco... remove a pasta e os arquivos recursivamente
testado.



3. Re: Deletar diretório que contém espaço

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/04/2020 - 19:45h

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


4. Re: Deletar diretório que contém espaço [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 07/04/2020 - 20:19h

msoliver escreveu:

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Tudo bem.
Mas com os diretórios criados, qual o comando para listar o conteúdo e logo após utilizar um pipe para o xargs ou exec deletar somente os que contém espaço?


5. Re: Deletar diretório que contém espaço [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/04/2020 - 20:38h


cesarzz escreveu:

msoliver escreveu:

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Tudo bem.
Mas com os diretórios criados, qual o comando para listar o conteúdo e logo após utilizar um pipe para o xargs ou exec deletar somente os que contém espaço?

Na saída dos comandos propostos, tem somente os diretórios com espaço no nome!!!
A sua pergunta, é praticamente o comando....... rsrsrsrsrs


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


6. Re: Deletar diretório que contém espaço [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 07/04/2020 - 20:58h

msoliver escreveu:


cesarzz escreveu:

msoliver escreveu:

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Tudo bem.
Mas com os diretórios criados, qual o comando para listar o conteúdo e logo após utilizar um pipe para o xargs ou exec deletar somente os que contém espaço?

Na saída dos comandos propostos, tem somente os diretórios com espaço no nome!!!
A sua pergunta, é praticamente o comando....... rsrsrsrsrs


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


A questão não é somente listar e sim também deletar os diretórios com espaço no nome.


7. Re: Deletar diretório que contém espaço

Rogerio
RogerDez

(usa Outra)

Enviado em 07/04/2020 - 21:26h

rm -rd /home/usuario/Documentos/*' '*
Opção -r eh para remover recursivamente e -d para remover somente diretórios, já que o glob do msoliver não qualifica para diretórios somente


Tb poderia

$ rm -r /home/usuario/Documentos/*\ */
neste caso, o espaço em branco está 'escapado' com uma barra invertida '\',
já a barra para frente '/' ao final do glob, qualica ele como diretório.
aqui vc está usando o comando 'rm', que é um pacote a parte, e os globs, que é uma funcionalidade da sua shell..


8. Re: Deletar diretório que contém espaço [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/04/2020 - 22:19h


cesarzz escreveu:

msoliver escreveu:


cesarzz escreveu:

msoliver escreveu:

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Tudo bem.
Mas com os diretórios criados, qual o comando para listar o conteúdo e logo após utilizar um pipe para o xargs ou exec deletar somente os que contém espaço?

Na saída dos comandos propostos, tem somente os diretórios com espaço no nome!!!
A sua pergunta, é praticamente o comando....... rsrsrsrsrs


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


A questão não é somente listar e sim também deletar os diretórios com espaço no nome.

Entendi Cesar.
É simples:
ls -1d Documentos/*' '*|xargs -i rm -rf {} 


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


9. Re: Deletar diretório que contém espaço [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 07/04/2020 - 23:14h

msoliver escreveu:


cesarzz escreveu:

msoliver escreveu:


cesarzz escreveu:

msoliver escreveu:

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Tudo bem.
Mas com os diretórios criados, qual o comando para listar o conteúdo e logo após utilizar um pipe para o xargs ou exec deletar somente os que contém espaço?

Na saída dos comandos propostos, tem somente os diretórios com espaço no nome!!!
A sua pergunta, é praticamente o comando....... rsrsrsrsrs


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


A questão não é somente listar e sim também deletar os diretórios com espaço no nome.

Entendi Cesar.
É simples:
ls -1d Documentos/*' '*|xargs -i rm -rf {} 


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Entendi sua lógica.
Mas o seu comando apaga arquivos e diretórios.
O intuito é apagar somente diretórios com espaço no nome, esses diretórios estando vazio ou não.


10. Re: Deletar diretório que contém espaço [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 07/04/2020 - 23:29h

RogerDez escreveu:

$ rm -rd /home/usuario/Documentos/*' '*
Opção -r eh para remover recursivamente e -d para remover somente diretórios, já que o glob do msoliver não qualifica para diretórios somente


Tb poderia

$ rm -r /home/usuario/Documentos/*\ */
neste caso, o espaço em branco está 'escapado' com uma barra invertida '\',
já a barra para frente '/' ao final do glob, qualica ele como diretório.
aqui vc está usando o comando 'rm', que é um pacote a parte, e os globs, que é uma funcionalidade da sua shell..


Roger.
Agradeço muito.

Só um detalhe.
A segunda parte funciona perfeitamente.

Mas o primeiro comando que passou apaga arquivos com espaços também (quando na verdade é para apagar somente diretório com espaço, estando vazio ou não)

rm -rd /home/usuario/Documentos/*' '*

Apaga arquivos e diretórios com espaços.
Estranhei devido a opção - d ser diretório, mas o comando varre também os arquivos.
Alguma sugestão para este comando?

O outro funcionou perfeitamente


11. Re: Deletar diretório que contém espaço [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/04/2020 - 17:28h


cesarzz escreveu:

msoliver escreveu:


cesarzz escreveu:

msoliver escreveu:


cesarzz escreveu:

msoliver escreveu:

cesarzz escreveu:

Olá.
Qual o comando que pode ser passado ao xargs ou exec para deletar diretórios que contenha espaço?
Por exemplo:
ls
arquivo.txt
Dir A
Dir B
DirC
Quero utilizar o comando ls, listando apenas os diretórios e depois redirecionar para o xargs apagar somente os que possuem espaços no nome. No caso apagar somente "Dir A" e "Dir B". Ficando no diretório corrente o arquivo arq.txt e o diretório DirC.

ls | ...

Cesar


Segue sugestão:
for i in Documentos/*' '* ; do echo "$i" ; done
Documentos/Nova Pasta
Documentos/Nova Pasta 1
Documentos/Nova Pasta 2
Ou
ls -1d Documentos/*' '*
'Documentos/Nova Pasta'
'Documentos/Nova Pasta 1'
'Documentos/Nova Pasta 2'

#Criei essas pastas com espaço para testar
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Tudo bem.
Mas com os diretórios criados, qual o comando para listar o conteúdo e logo após utilizar um pipe para o xargs ou exec deletar somente os que contém espaço?

Na saída dos comandos propostos, tem somente os diretórios com espaço no nome!!!
A sua pergunta, é praticamente o comando....... rsrsrsrsrs


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


A questão não é somente listar e sim também deletar os diretórios com espaço no nome.

Entendi Cesar.
É simples:
ls -1d Documentos/*' '*|xargs -i rm -rf {} 


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Entendi sua lógica.
Mas o seu comando apaga arquivos e diretórios.
O intuito é apagar somente diretórios com espaço no nome, esses diretórios estando vazio ou não.

Boa tarde cesarzz.
Desculpe pelo comando ERRADO!!!!
Como testei em uma pasta contendo somente "diretórios", e usei o ls -1d, que teoricamente, listaria os diretório.... ERREI....
Vejo que a solução é usar o find....
find Documentos/ -type d -iname "* *" -exec rm -r {} \; 

#Testei na pasta com arquivos e diretórios....., "Pega somente os DIR com espaço no nome"


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts