Можно ли определить ход выполнения команды rm?

18

Использование rm -rf LargeDirectoryдля удаления большого каталога может занять много времени в зависимости от размера каталога.

Можно ли получить обновление статуса или каким-либо образом отслеживать ход этого удаления, чтобы получить приблизительную оценку того, где находится команда?

Джон
источник
4
Попробуй watch -n 5 du -s LargeDirectory. Смотреть, как оно идет к нулю.
Марк Плотник
@MarkPlotnick: на MacOS необходимо установить его с помощью brew install watchили см. Здесь для получения инструкций.
SMCI

Ответы:

19

из

man rm 

используйте опцию -v:

-v, --verbose
explain what is being done
simozz
источник
4
это не прогресс, хотя. Как «удаление строки / foo» помогает вам определить, как далеко все закончено?
летающие овцы
@flyingsheep считают, что он удаляет все в алфавитном порядке, по крайней мере, в OSX, так что это помогает ...
Тим Баас
7

Я вижу вопрос старый. Я хочу поделиться тем, что работает для меня, чтобы помочь кому-то еще.

Я получаю индикатор выполнения с помощью pvкомандной строки Pipe Viewer

Это команда

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

Если вам нужны права root для удаления директории или файла,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -rрекурсивно удалять DIR и файлы. -vподробный список всех файлов и каталогов, которые удаляются.

  • pv -l -s: -lсчитать строки вместо байтов. -sустановить общее количество строк, которые будут удалены.

  • $( du -a <dir_or_file> | wc -l ): du -aвозвращает список всех файлов и каталогов из указанного каталога. wc -lвозвращает количество строк, выведенных du -a.

  • > /dev/null: отправить вывод rm -rvв никуда.

Эзекуэль
источник
Хорошая идея. Это может дать неправильное количество файлов / каталогов, если какие-либо имена содержат символы новой строки; find {dir} -printf . | wc -cбудет безопаснее (но -printfявляется расширением GNU).
Скотт
Это на самом деле то, что я искал, спасибо. Другие комментарии оставили что-то не хватает.
Восставший из ада
3

Вы можете просмотреть ход выполнения любых текущих команд с помощью Coreutils Progress Viewer ( cv). Это не то же самое, что вводить одну команду, но вы можете видеть, как она выполняется.

пример использования CV

Я уверен, что кто-то может придумать псевдоним для запуска этой команды. Это также работает с cp, mv, dd, tar, gzip/gunzip, cat, etc.. Более подробную информацию об этом можно найти на

gitthub Xfennec / прогресс

Ashitakalax
источник
2
Так как progress (как теперь известно cv) отслеживает открытые файлы, а rm не открывает удаляемые файлы, на самом деле это может быть не очень полезно.
Дхаг
2
@dhag Ваше право, я думал, что это сработает для РМ. Сейчас я спорю, убрать ли ответ. хмм
ашитакалакс