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


23

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

rm -f ./?*

apenas apaga tudo. É possível usar o grepsl e direcionar os xargsarquivos para outra pasta, mas esperava que houvesse uma maneira adequada de fazer isso. Precisa de ajuda nos arquivos ?e !.

Respostas:


26

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

rm -f ./\?*

Isso funciona !também para :

rm -f ./\!*

Ou de uma só vez:

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

Atualizar

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


4
@recluze Não é estúpido; está longe de ser óbvio como fazê-lo se você não souber como escapar de caracteres curinga.
um CVn 13/07/2013

@recluze Ainda se sente estúpido após 5 votos na sua pergunta? :) A propósito, veja a resposta atualizada.
Joseph R.

Obrigado e obrigado :) ... Estava ciente dos problemas na saída ls, mas meus arquivos tinham um padrão específico em que eu podia contar. No entanto, é bom saber :)
recluze

13

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

Usando rm -i *funcionou para mim. Se você não quiser fazer isso, também poderá excluir por inode, conforme descrito em http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Para encontrar o inode, use:

ls -il

Então faça:

find . -inum [inode-number] -exec rm -i {} \;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.