Як запустити сухий цикл rm, щоб побачити, які файли буде видалено?


87

Я хочу побачити, які файли буде видалено під час виконання rmв Linux. Здається, у більшості команд є параметр "сухого запуску", щоб відображати саме таку інформацію, але я не можу знайти такий варіант для rm. Це навіть можливо?


Я також хотів би побачити, які файли будуть генерувати помилки через відсутність дозволів.
Саймон Вудсайд

Відповіді:


121

Скажіть, що ви хочете запустити:

rm *.txt

Ви можете просто запустити:

echo rm *.txt

або навіть просто:

echo *.txt

щоб побачити, які файли rmбуде видалено, оскільки оболонка розширює *.txt, а не rm.

Єдиний раз, коли це вам не допоможе rm -r.

Якщо ви хочете видаляти файли та каталоги рекурсивно, тоді ви можете використовувати findзамість rm -r, напр

find . -name "*.txt" -print

тоді, якщо він робить те, що ви хочете, змініть -printна -delete:

find . -name "*.txt" -delete

знайти - хороший вибір ІМО. І якщо ви хочете використовувати графічну презентацію tree.
шумили

2
Майже ідеально. find . -name "*.txt" -deleteне здається рекурсивним Тхо. Видалено всі файли, але не видалено каталоги, які були перелічені в-print
Оскар Годсон

1
@OscarGodson Припустимо, що після видалення файлів каталоги залишаються порожніми, їх можна видалити за допомогоюfind . -type d -empty -delete
datguy

1
@OscarGodson - findне видалить каталоги, які все ще містять файли (еквівалентно rm dir/без -r). Ви б спочатку очистити каталог - або використовувати findдля -exec rmз відповідними параметрами , щоб зробити це. наприкладfind . -depth -name "*.txt" -exec rm -r {} +
shalomb

Використання echo rm *.txtметоду, здається, має недолік. Він представляє результати в об'єднаному списку (довгий рядок з одним файлом після попереднього), на відміну від вертикального списку. Чи є якийсь спосіб отримати результат для відображення у вертикальному списку (один файл у рядку)? (UPDATE: Я бачу , що findметод робить те , що я просив Так що я буду працювати з цим ..)
inspirednz

16

Ви можете сказати:

rm -i

запустити його в інтерактивному режимі, тож rmзапропонує підтвердити, чи слід видаляти кожен файл. Ви можете просто відповісти "ні" на кожен файл, щоб побачити, на які з них може вплинути.


8
Це досить складно з великою кількістю файлів.
Cory Klein

9
так п | rm -i # коментар для досягнення мінімальної тривалості коментарів
Джошуа

4

Ви можете lsперелічити всі файли, які буде видалено rm:

ls ../path/*.txt

Якщо вам потрібно переглянути список, щоб переглянути файли, які буде видалено рекурсивно rm, тоді використовуйте -Rпрапор із ls:

ls -R ../path/*.txt

Влучне зауваження. Хоча якщо ви знаєте рівень гніздування, ви можете досягти цього за допомогоюls */*/*.txt
Венет Редді,

1
Ти правий. З -Rваріантом.
Венет Редді,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.