Exclua todos os arquivos que começam com um ponto de interrogação

21

Eu tenho uma pasta na qual eu tenho cerca de 4k arquivos. Alguns desses arquivos começam com um caractere ? ou ! . Preciso excluí-los, mas não consigo encontrar uma expressão que faça isso:

rm -f ./?*

apenas apaga tudo. Eu posso usar grep em ls e canalizá-lo através de xargs e mover arquivos para outra pasta, mas eu esperava que houvesse uma maneira correta de fazer isso. Precisa de ajuda nos arquivos ? e ! .

    
por recluze 13.07.2013 / 07:56

2 respostas

26

Não há necessidade de qualquer coisa extravagante. Simplesmente escape do ? para que não seja considerado parte do glob:

rm -f ./\?*

Isso funciona para ! também:

rm -f ./\!*

Ou de uma só vez:

rm -f ./{\?,\!}*

Atualizar

Só percebi que você estava sugerindo para grep a saída de ls . Eu queria chamar sua atenção para o fato de que você não deveria analisar a saída de ls

    
por 13.07.2013 / 07:57
10

No meu caso, os caracteres não eram realmente pontos de interrogação, mas caracteres unicode que aparentemente não podiam ser exibidos no meu console.

Usando rm -i * trabalhado para mim. Se você não quiser fazer isso, você também pode excluir por inode, conforme descrito em link .

Para encontrar o inode, use:

ls -il

Então faça:

find . -inum [inode-number] -exec rm -i {} \;
    
por 16.09.2015 / 13:22