Como criar um nome de arquivo para o pipeline para excluir todos os arquivos?

0

Por isso, quero excluir todos os arquivos do diretório atual usando o seguinte pipeline:

ls | sed -rn 's/(.*)\.jpg$/mv -n & .jpeg/pi' | sh

Como criar um arquivo, nomeado para que a execução do pipeline acima exclua todos os arquivos no diretório atual. Assim, através da injeção de código.

Por favor, indique o comando usado para criar esse arquivo.

    
por Highlights Factory 14.12.2014 / 23:06

1 resposta

2

O comando que você tem acima (renegamente) renomeia todos os arquivos na corrente diretamente de * .jpg para * .jpeg, ele pode ser modificado para deletar todos os arquivos, mas dificilmente é apropriado para a tarefa.

No entanto, parece que você está tentando criar um nome de arquivo adequado para que, quando o comando acima o encontrar, ele exclua tudo no diretório atual. Isso é certamente possível (embora faça uma pergunta sobre seus motivos ...).

ISENÇÃO DE RESPONSABILIDADE: Provavelmente você vai causar dano com isso. Isso é tudo em você, teste primeiro para que você não estrague algo com o que se preocupar, e espere ação legal contra você do seu alvo se você for pego maliciosamente fazendo isso em seu sistema.

Agora que está fora do caminho, você deseja criar um arquivo que corresponda à entrada sed, mas crie uma saída adequada para ainda fazer o que quiser.

Crie um arquivo chamado ;rm *;.jpg (ou ;rm -rf *;.jpg para uma remoção mais agressiva). Você pode executar isso apenas na parte sed para ver o que ele fará por:

  • echo ";rm * ; .jpg" | sed -rn 's/(.*)\.jpg$/mv -n & .jpeg/pi'

EDIT: Como uma nota lateral, esse comando que você listou pode ser feito para executar (quase) qualquer coisa que você gosta como o usuário executá-lo, uma exclusão de todos os arquivos é um uso sem imaginação (e destrutivo) dessa fraqueza . Talvez considere algo mais colorido (e mais fácil de reverter)?

    
por 14.12.2014 / 23:44