Bash - Consertando a saída confusa

0

Não sei como / porque isso está acontecendo. Basicamente eu tenho um comando que deve encontrar e limpar todos os arquivos na área de trabalho que contenham um determinado padrão. Eu estou fazendo a primeira parte usando:

find . -iregex '.*._.*'

Quando executo isso por si só, a saída é normal, ou seja, mostra todos os arquivos que contêm esse padrão. ex:

./Graph/CMPT 215/makefiles/._makefile6
./Graph/CMPT 215/makefiles/._example3.cmds
./Graph/CMPT 215/makefiles/._makefile5
./Graph/CMPT 215/makefiles/._makefile1
./Graph/CMPT 215/makefiles/._makefile4
./Graph/CMPT 215/makefiles/._makefile2
./Graph/CMPT 215/makefiles/._makefile3
...

No entanto, eu quero excluir todos esses arquivos, então depois de alguma pesquisa no Google, eu criei isto:

rm -rf $(find . -iregex '.*._.*')

Mas o problema é que, quando executo este comando, recebo a seguinte saída:

rm: cannot remove â?~215/makefiles/._makefile6â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._example3.cmdsâ?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile5â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile1â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile4â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile2â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile3â?T: No such file or directory
...

Eu olhei on-line e foi sugerido para redefinir o terminal digitando reset , mas isso não foi corrigido. O que posso fazer para garantir que a saída para rm esteja correta?

Se isso ajudar, estou no Windows e usando o ssh para conectar-me a uma máquina remota executando o Linux Mageia e excluindo alguns arquivos na máquina

    
por smac89 12.11.2014 / 22:22

2 respostas

1

Isso deve funcionar: find . -iregex '.*._.*' -exec rm {} \; .

Os resultados do comando find serão enviados para o comando rm como seu argumento, {} é o espaço reservado para esse argumento, \; é para completar o sinalizador -exec da função find.

Mais informações sobre o comando de localização aqui .

    
por 12.11.2014 / 22:25
0

Eu acho que você deveria usar o comando xargs com o find assim:

find . -iregex '.*._.*' | xargs rm -rf

find coletará todos os arquivos desnecessários em uma sequência e xargs rm -rf excluirá todos os caminhos de arquivo dessa sequência. É mais eficiente usar o xargs com a opção find -exec , porque ele executará rm -rf somente os que forem com a opção -exec .

    
por 12.11.2014 / 22:47