É possível determinar o progresso de um comando rm?

18

Usar rm -rf LargeDirectorypara excluir um diretório grande pode levar muito tempo para ser concluído, dependendo do tamanho do diretório.

É possível obter uma atualização de status ou, de alguma forma, monitorar o progresso dessa exclusão para fornecer uma estimativa aproximada de onde está o comando no processo?

John
fonte
4
Tente watch -n 5 du -s LargeDirectory. Veja como vai a zero.
Mark Plotnick
@ MarkPlotnick: no MacOS, é necessário instalá-lo brew install watchou veja aqui para obter instruções.
smci 01/06

Respostas:

19

a partir de

man rm 

use a opção -v:

-v, --verbose
explain what is being done
simozz
fonte
4
isso não é progresso. como “agora excluir foo / bar” ajuda a determinar até que ponto está tudo completo?
ovelha voadora 23/05
@flyingsheep acredito que remove tudo em ordem alfabética, pelo menos no OSX que faz, por isso não ajuda, de alguma forma ..
Tim Baas
7

Vejo que a pergunta é antiga. Quero compartilhar o que funciona para mim, talvez para ajudar outra pessoa.

Eu recebo a barra de progresso usando a pvlinha de comando Pipe Viewer

Este é o comando

rm -rv DIR_OR_FILE_NAME | pv -l -s $ (do -a DIR_OR_FILE_NAME | wc -l)> / dev / null

Se você precisar de permissões de root para o diretório ou arquivo excluir,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -rpara remover recursivamente DIRs e arquivos. -vdetalhado, lista todos os arquivos e diretórios que estão sendo removidos.

  • pv -l -s: -lpara contar linhas em vez de bytes. -sdefina o total de linhas a serem removidas.

  • $( du -a <dir_or_file> | wc -l ): du -aretorna uma lista de todos os arquivos e diretórios do diretório especificado. wc -lretorna a contagem de linhas geradas por du -a.

  • > /dev/null: envia a saída de rm -rvpara lugar nenhum.

Ezequiel
fonte
Boa ideia. Isso pode gerar uma contagem incorreta de arquivos / diretórios se algum nome contiver novas linhas; find {dir} -printf . | wc -cseria mais seguro (mas -printfé uma extensão GNU).
Scott
Na verdade, era isso que eu estava procurando, obrigado. Outros comentários deixaram algo faltando.
Hellreaver
3

Você pode visualizar o progresso de qualquer comando em execução no momento com o Coreutils Progress Viewer ( cv). Não é como emitir um único comando, mas você pode ver o progresso dele.

exemplo de CV sendo usado

Tenho certeza que alguém pode criar um alias para executar isso com o comando Também trabalha com cp, mv, dd, tar, gzip/gunzip, cat, etc.. Mais detalhes sobre isso podem ser encontrados em

gitthub Xfennec / progress

Ashitakalax
fonte
2
Como o progresso (como "cv" agora é conhecido) controla os arquivos abertos e a rm não abre os arquivos excluídos, isso pode não ser realmente muito útil.
dhag
2
@ Dhag Seu direito, eu pensei que isso iria funcionar para rm. Agora estou pensando se deve remover a resposta. hmm #
Ashitakalax