Dica: Copiando arquivos com caracteres especiais

Se você já se deparaou 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’.

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!!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s