Pular para o conteúdo

Copiando arquivos com caracteres especiais

Dica publicada em Linux / Comandos
Sandro Marcell SMarcell
Hits: 12.381 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Ordenando uma lista de IPs (IPv4) com o sort

Formatando números no shell com zeros à esquerda

Bash: Gráficos estatísticos de tráfego de rede

Shell - operações envolvendo números em ponto flutuante

Encriptando e compactando arquivos com o zip

Fedora sem ifconfig [Resolvido]

Mágicas com o utilitário screen em conexões remotas

Monitorando um comando com strace

Personalizando comandos

Vire "ninja" no Linux com curso grátis online

#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 removido 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! ;)
#6 Comentário enviado por manoelernando em 25/04/2016 - 16:55h
Tem com copiar diretórios dessa maneira também?

Contribuir com comentário

Entre na sua conta para comentar.