Comando Sed para remover tudo após o cólon

0

Eu tenho a coleção de arquivos de texto que contêm / não a frase (arquivo principal B).

Então eu tentei isso:

sudo find / -type f -name core | xargs file | grep 'B core file' | sed 's/:ELF.*//g' | xargs rm -f 

Para remover arquivos específicos com a frase "arquivo principal B" .

Mas esse comando não funcionará.

Estou esperando a solução. Muito obrigado.

Dzung
fonte

Respostas:

1

Somente o comando find será executado com permissões de root. A rm será executada com seu ID de usuário e, por isso, falhará. Coloque o comando inteiro em um script e execute o script com sudo.

Você também pode usar um sudo extra para cada comando, que acessa os arquivos, que provavelmente não são legíveis ou graváveis ​​para você:

sudo find / -type f -name core | xargs sudo file | sudo grep 'B core file' | sed 's/:ELF.*//g' | xargs sudo rm -f 
ceving
fonte
Obrigado, ceving. Vou dar uma chance. No entanto, você pode confirmar que o regex 's /: ELF. * // g' é adequado. Não sei o que é ELF?
Dzung
Eu tentei: sudo find / -type f -name core | arquivo xargs | grep 'arquivo principal B' | sed 's /:.*// g' | xargs rm -f. O regex ':. *' É substituir todos os caracteres após os dois pontos, que me fornecerão apenas o caminho do arquivo, mas ainda não o entendi completamente (porque ': *' não funcionou). No meu caso, não é uma questão de permissão. porque o arquivo foi encontrado é criado por mim.
Dzung
0

Isso parece muito complicado.

experimentar:

grep -l 'arquivo principal B' * | xargs rm

Ele removerá os arquivos que contêm 'arquivo principal B' do diretório em que você está quando executar isso.

JaHei
fonte
Oi Mikael, Eu estava prestes a extrair o caminho dos arquivos filtrados com base no tipo de arquivo, não no conteúdo dos arquivos. Saudações,
Dzung
Ah ok. Sua pergunta e título não são muito claros.
JaHei