Come si esegue una corsa a secco di rm per vedere quali file verranno eliminati?


87

Voglio vedere quali file verranno eliminati quando si esegue un rmin Linux. La maggior parte dei comandi sembra avere un'opzione di esecuzione a secco per mostrare solo tali informazioni, ma non riesco a trovare tale opzione per rm. È possibile?


Vorrei anche vedere quali file genereranno errori per mancanza di autorizzazioni.
Simon Woodside,

Risposte:


121

Di 'che vuoi correre:

rm *.txt

Puoi semplicemente eseguire:

echo rm *.txt

o anche solo:

echo *.txt

per vedere quali file rmverranno eliminati, perché è la shell che sta espandendo *.txt, no rm.

L'unica volta che questo non ti aiuterà è per rm -r.

Se si desidera rimuovere ricorsivamente file e directory, è possibile utilizzare findinvece di rm -r, ad es

find . -name "*.txt" -print

quindi se fa quello che vuoi, cambia -printin -delete:

find . -name "*.txt" -delete

find è una buona scelta IMO. E se vuoi una presentazione grafica usa tree.
Rumorosamente il

2
Quasi perfetto. find . -name "*.txt" -deletenon sembra essere ricorsivo. Rimossi tutti i file, ma non rimosse le directory elencate in-print
Oscar Godson,

1
@OscarGodson Supponendo che le directory siano state lasciate vuote dopo aver rimosso i file, è possibile rimuoverli confind . -type d -empty -delete
datguy

1
@OscarGodson - findnon eliminerà le directory che contengono ancora file (equivalente a rm dir/senza -r). Si dovrebbe svuotare la directory prima - o utilizzare findper -exec rmcon le opzioni appropriate per fare questo. es.find . -depth -name "*.txt" -exec rm -r {} +
shalomb,

L'uso del echo rm *.txtmetodo sembra avere uno svantaggio. Presenta i risultati in un elenco concatenato (una lunga stringa con un file dopo quello precedente), al contrario di un elenco verticale. Esiste un modo per visualizzare l'output in un elenco verticale (un file per riga)? (AGGIORNAMENTO: Vedo che il findmetodo fa quello che ho richiesto. Quindi eseguirò con quello.)
inspirednz

16

Si può dire:

rm -i

per eseguirlo in modalità interattiva, quindi rmti chiederà di confermare se ogni file deve essere eliminato. Potresti semplicemente rispondere di no a ciascun file per vedere quali sarebbero interessati.


8
Questo è piuttosto difficile con un gran numero di file.
Cory Klein,

9
si n | rm -i #comment per soddisfare la durata minima dei commenti
Joshua

4

È possibile utilizzare lsper elencare tutti i file che verranno rimossi da rm:

ls ../path/*.txt

Se è necessario elencare per visualizzare i file che verranno eliminati con un ricorsivo rm, utilizzare il -Rflag con ls:

ls -R ../path/*.txt

Buon punto. Tuttavia, se conosci il livello di nidificazione, puoi ottenerlo tramitels */*/*.txt
Veneet Reddy,

1
Hai ragione. Con l' -Ropzione
Veneet Reddy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.