Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

1. Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 19/08/2017 - 17:38h

existe alguma forma rápida e prática de fazer com que o comando "find" exiba os nomes dos arquivos entre aspas, ou então com \ nos espaços dos nomes?

minha intenção é fazer com que em um laço "for" ou "while" a lista com os nomes de arquivos e de diretórios retornados pelo "find" já estejam prontos para operarem com arquivos e diretórios que contém espaços em seus nomes.



  


2. Re: Fazer o comando

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 19/08/2017 - 18:59h

find ... -exec echo '"{}" ' \; 

ou
find ... | sed 's/ /\\ /g' 

Onde tem "..." são seus argumentos do comando find.


3. Re: Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/08/2017 - 20:11h

raserafim escreveu:

existe alguma forma rápida e prática de fazer com que o comando "find" exiba os nomes dos arquivos entre aspas, ou então com \ nos espaços dos nomes?

minha intenção é fazer com que em um laço "for" ou "while" a lista com os nomes de arquivos e de diretórios retornados pelo "find" já estejam prontos para operarem com arquivos e diretórios que contém espaços em seus nomes.


Boa noite, segue sugestão:
find user/ -maxdepth 1|sed 's/ /\\ /g;s/^\|$/\"/g' 

ou
ls -1 user|sed 's/ /\\ /g;s/^\|$/\"/g' 

Marcelo Oliver


4. Re: Fazer o comando

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 21/08/2017 - 16:22h

as sugestões dos colegas "HCK" e "msoliver" funcionaram!

obrigado aos dois!

sed 's/ /\\ /g  #coloca \ entre os espaços em branco! 


sed 's/^\|$/\"/g'  #coloca aspas no início e no fim do nome do arquivo! 





5. Re: Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 21/08/2017 - 16:30h

apesar de responder à pergunta que fiz... ainda não resolveu meu problema..

explico...

ao invés de armazenar o resultado do comando "find" em uma variável... o que preciso é armazenar na variável a string do comando, para depois executar esse comando ao chamar a variável.

um exemplo ilustrativo..:

1- funcionando corretamente...
cmdlst=$(echo 'find . -iname "*.zip" -o -iname "*.rar"')

echo $(eval $cmdlst)


2- não funcionando..
cmdlst=$(echo 'find . -iname "*.zip" -o -iname "*.rar" | sed 's/^\|$/\"/g'')

echo $(eval $cmdlst)
o problema aqui é como colocar as aspas simples exigida pelo comando sed? e como passa as aspas duplas como um parâmetro do comando sed (para ser inserida no início e no final de cada nome)?


6. Re: Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 22/08/2017 - 13:11h

Já testou assim:
cmdlst=$(find . -iname "*.zip" -o -iname "*.rar" | sed 's/^\|$/\"/g') # comando direto, sem echo 

ou
cmdlst=$(echo `find . -iname "*.zip" -o -iname "*.rar" | sed 's/^\|$/\"/g'`) # usando crase ` em vez de aspas ' 




7. Re: Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 24/08/2017 - 16:07h

HCK escreveu:

Já testou assim:
cmdlst=$(find . -iname "*.zip" -o -iname "*.rar" | sed 's/^\|$/\"/g') # comando direto, sem echo 

HCK, nessa sua sugestão não funciona porque, neste caso, o resultado do comando com a listagem de arquivos e diretórios é que seria armazenado na variável. quando o que quero é, na verdade, armazenar apenas a sintaxe do comando na variável para só depois executar o comando por meio da execução de sua sintaxe armazenada na variável.

HCK escreveu:

cmdlst=$(echo `find . -iname "*.zip" -o -iname "*.rar" | sed 's/^\|$/\"/g'`) # usando crase ` em vez de aspas ' 
essa sugestão sequer funcionou; mas acredito que está na mesma lógica da sua sugestão anterior: ou seja, armazenar na variável o resultado do comando.




8. Re: Fazer o comando "find" exibir arquivos entre aspas ou com \ nos espaços dos nomes [RESOLVIDO]

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 28/08/2017 - 11:41h

raserafim escreveu:

as sugestões dos colegas "HCK" e "msoliver" funcionaram!

obrigado aos dois!

sed 's/ /\\ /g  #coloca \ entre os espaços em branco! 


sed 's/^\|$/\"/g'  #coloca aspas no início e no fim do nome do arquivo! 

uma vez que as sugestões dos colegas responderam à pergunta do tópico, então, vou considerá-lo agora como resolvido!!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts