rm -f arquivos começando com um dígito

6

Eu acidentalmente redirecionei a saída de um arquivo CSV para o meu diretório. Como posso rm apenas os arquivos que começam com um número e deixar os arquivos que começam com uma letra intacta?

mymachine$ ls
71.24         README.md        30            4.29
8             filter.sh        42.81         5.58         
8.36          purchases.csv    1,208.8       100          
16.7          2.56             21.78         269.96        
    
por spuder 10.02.2014 / 07:14

2 respostas

16

Algo como isso deve acontecer:

$ rm [0-9]*

Lembre-se de que você sempre pode usar echo com quaisquer argumentos globbing antes de deixar rm executar com eles.

$ echo [0-9]*
100 1,208.8 16.7 21.78 2.56 269.96 30 42.81 4.29 5.58 71.24 8 8.36

Depois de executar o comando rm acima:

$ ls
filter.sh  purchases.csv  README.md
    
por 10.02.2014 / 07:21
0

Nesse caso, você também pode usar facilmente find combinado com as opções -regex e -delete .

Na pasta, primeiro teste sua seleção de arquivos:

$ find . -regex "[^/]+/.*[0-9]+"

Em seguida, adicione a opção -delete :

$ find . -regex "[^/]+/.*[0-9]+" -delete

Seus arquivos agora são excluídos:

$ ls
filter.sh  purchases.csv  README.md

Sempre verifique primeiro sua seleção, pois o uso da expressão [^/]+/.*[0-9]+ regular selecionará qualquer arquivo que contenha um número no final (por exemplo, md5 ou hdf5 ).

Por favor, note que find processa automaticamente subdiretórios também. Se você não quiser, adicione -maxdepth 1 antes da expressão regular.

Para o OS X, adicione a opção -E .

    
por 16.01.2017 / 09:59

Tags