Чи можна визначити хід команди 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

4
але це не прогрес. як "тепер видалення foo / bar" допомагає вам визначити, наскільки далеко це все?
літаючі вівці

@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).
Скотт

Це насправді те, що я шукав, дякую. В інших коментарях чогось не вистачало.
Hellreaver

3

Ви можете переглядати хід будь-яких команд, що працюють в даний час, за допомогою програми Coreutils Progress Viewer ( cv). Це не так, як видавати одну команду, але ви можете бачити прогрес в ній.

приклад використання резюме

Я впевнений, що хтось може придумати псевдонім, щоб запустити це за допомогою команди. Він також працює з cp, mv, dd, tar, gzip/gunzip, cat, etc.. Більш детально про це можна ознайомитись на

gitthub Xfennec / прогрес


2
Оскільки прогрес (як "cv" тепер відомий) відслідковує відкриті файли, а rm не відкриває файли, які видаляє, це насправді може бути не дуже корисним.
даг

2
@dhag Ваше право, я думав, що це буде працювати для rm. Зараз я обговорюю, чи слід видаляти відповідь. хм
Ашитакалакс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.