Uma maneira simples seria remover esses arquivos por seu inode. :)
Use ls -li
no diretório com os caracteres incomuns para mostrar o número de inode de cada arquivo, por exemplo,
$ ls -li
total 0
133370 -rw-r--r-- 1 malte malte 0 Dec 30 19:00 ?2?.???љ?!?Gb??σ?[?F?
132584 -rw-r--r-- 1 malte malte 0 Dec 30 18:59 ??3]d???:????????1????G?p?ȋ??????嫳?d????ą-??
Em seguida, use o utilitário find
para excluir o arquivo correspondente pelo nome, usando a sintaxe find <somepath> -inum <inode_number> -exec rm -i {} \;
, como no exemplo a seguir:
$ find . -inum 133370 -exec rm -i {} \;
rm: remove regular empty file ‘./?2?.???љ?!?Gb??σ?[?F?’? y
$ ls -li
total 0
132584 -rw-r--r-- 1 malte malte 0 Dec 30 18:59 ??3]d???:????????1????G?p?ȋ??????嫳?d????ą-??
A opção -i
para rm
não é realmente necessária, apenas a adicionei para evitar que você remova acidentalmente arquivos que não pretendia remover. :) Isso faz com que rm
peça confirmação para cada arquivo que você deseja excluir.
Se você quiser remover vários arquivos de seus inodes, use a sintaxe -o
(significando ou ) para find
:
$ find . \( -inum 133370 -o -inum 132584 \) -exec rm -i {} \;
rm: remove regular empty file ‘./?2?.???љ?!?Gb??σ?[?F?’? y
rm: remove regular empty file ‘./??3]d???:????????1????G?p?ȋ??????嫳?d????ą-??’? y
Você pode adicionar mais números de inode estendendo a expressão entre parênteses com mais expressões -o -inum <inode_number>
.