Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Copiando arquivos com caracteres especiais
Linux user
Publicado por Sandro Marcell em 15/02/2012

Login: SMarcell, 579193 pontos | Blog: http://my.opera.com/smarcell/blog/
[ Hits: 1116 ]

Copiando arquivos com caracteres especiais

Se você já se deparou com uma situação na qual fosse preciso copiar via CLI arquivos cujos nomes tivessem caracteres especiais, tais como: ª, º, §, etc... e por algum motivo, esses arquivos simplesmente não eram copiados! Como fazer agora?

Renomear "na unha" cada arquivo! (e se forem dezenas... ou centenas num compartilhamento!)

Alguns com certeza optam por essa opção. Mas você sendo esperto poderia usar a dupla "ls + find" para listar e copiar esses benditos arquivos pelos seus "inodes" (não sabe o que é inode! Pesquisa no Google.) da seguinte forma:

1 - Liste os inodes dos arquivos:

$ ls -i

2 - Com o find copie-os para onde quiser:

$ find . -type f -inum INODE -exec cp -f {} /caminho/destino \;

Obs.: Os inodes são as sequências numéricas listadas à esquerda pelo 'ls -i'.

E se você quiser automatizar o processo, crie um shell script mais ou menos assim:

#!/bin/sh # set -e inodes_list=`ls -i | awk '{print $1}' | tr '\n' ' '` for i in $inodes_list; do find . -type f -inum $i -exec cp -f {} /caminho/destino \; done exit $?


Pronto sem dor de cabeça e sem complicações! =)

Mais detalhes?

$ man ls
$ man find


Falou!!!

Previamente publicado em:


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Ajustando horário no Slackware
   Dica Linux recomendada Comandos do smbclient
   Dica Linux recomendada Controlando o amarok pela linha-de-comando
   Dica Linux recomendada Colocando seu lilo boot no disquete
   Dica Linux recomendada Utilizando o Alien

Comentários
[1] Comentário enviado por chimico em 15/02/2012 - 17:32h:

Maneiro SMarcell, você pode fazer assim também:

for i in`ls -i | awk '{print $1}' | tr '\n' ' '` ; do cp -fv "$i" /caminho/destino ; done ; sync

Costumo usar `comandos` no loop 'for', e sempre funciona, inclusive com o sed, cut, wc ...

abraços e favoritado

[2] Comentário enviado por edps em 16/02/2012 - 20:09h:

@SMarcell, você é o cara!

+ favoritos.

[3] Comentário enviado por daemonio em 17/02/2012 - 02:56h:

+fav
Boa dica!!

[4] Comentário enviado por levi linux em 17/02/2012 - 14:37h:

Favoritado! Excelente dica!

[5] Comentário enviado por SMarcell em 18/02/2012 - 14:43h:

Opá, valeu pelo apoio galera! ;)



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.