W jaki sposób uruchamiasz suchą wersję rm, aby zobaczyć, które pliki zostaną usunięte?

87

Chcę zobaczyć, jakie pliki zostaną usunięte podczas wykonywania w systemie rmLinux. Wydaje się, że większość poleceń ma opcję uruchamiania na sucho, aby wyświetlać takie informacje, ale nie mogę znaleźć takiej opcji rm. Czy to w ogóle możliwe?

Cory Klein
źródło
Chciałbym również zobaczyć, które pliki generują błędy z powodu braku uprawnień.
Simon Woodside,

Odpowiedzi:

121

Powiedz, że chcesz uruchomić:

rm *.txt

Możesz po prostu uruchomić:

echo rm *.txt

a nawet po prostu:

echo *.txt

aby zobaczyć, które pliki rmzostaną usunięte, ponieważ jest to powłoka *.txt, która się nie rozwija rm.

To jedyny raz, kiedy ci to nie pomoże rm -r.

Jeśli chcesz rekursywnie usuwać pliki i katalogi, możesz użyć findzamiast rm -rnp

find . -name "*.txt" -print

a następnie, jeśli to robi to, co chcesz, zmień -printna -delete:

find . -name "*.txt" -delete
Mikel
źródło
znajdź to dobry wybór IMO. A jeśli chcesz skorzystać z prezentacji graficznej tree.
noisebleed
2
Prawie idealnie. find . -name "*.txt" -deletenie wydaje się rekurencyjne. Usunąłem wszystkie pliki, ale nie usunąłem katalogów wymienionych w-print
Oscar Godson
1
@OscarGodson Zakładając, że katalogi pozostały puste po usunięciu plików, możesz je usunąć za pomocąfind . -type d -empty -delete
datguy
1
@OscarGodson - findnie usunie katalogów, które nadal zawierają pliki (odpowiednik rm dir/bez -r). Trzeba by opróżnić katalog pierwszy - lub używać finddo -exec rmz odpowiednimi opcjami, aby to zrobić. np.find . -depth -name "*.txt" -exec rm -r {} +
shalomb
Stosowanie tej echo rm *.txtmetody wydaje się mieć wadę. Prezentuje wyniki w skonkatowanej liście (długi ciąg z jednym plikiem po poprzednim), w przeciwieństwie do listy pionowej. Czy jest jakiś sposób, aby wyjście wyświetlało się na liście pionowej (jeden plik na linię)? (UPDATE: Widzę, że findmetoda robi to, co mam o Więc biegnę z tym.).
inspirednz
16

Możesz powiedzieć:

rm -i

aby uruchomić go w trybie interaktywnym, rmpoprosi Cię o potwierdzenie, czy każdy plik powinien zostać usunięty. Możesz po prostu odpowiedzieć „nie” na każdy plik, aby zobaczyć, które z nich zostaną zmienione.

Justin Ethier
źródło
8
Jest to dość trudne w przypadku dużej liczby plików.
Cory Klein
9
tak n | rm -i #comment, aby spełnić minimalną długość komentarza
Joshua
4

Możesz użyć, lsaby wyświetlić listę wszystkich plików, które zostaną usunięte przez rm:

ls ../path/*.txt

Jeśli musisz wyświetlić listę, aby wyświetlić pliki, które zostaną usunięte za pomocą rekurencji rm, użyj -Rflagi z ls:

ls -R ../path/*.txt
Veneet Reddy
źródło
Słuszna uwaga. Chociaż znając poziom zagnieżdżenia, możesz to osiągnąć przezls */*/*.txt
Veneet Reddy
1
Masz rację. Z -Ropcją.
Veneet Reddy,