Ho una directory (~/temp/
) che contiene molti file e sottodirectory e, in alcune directory, potrebbe contenere altri file e sottodirectory. Inoltre, nella directory (~/temp/
), contiene un file txt speciale con nome kept.txt
, elenca alcuni file diretti e sottodirectory contenuti in ~/temp/
, ora voglio eliminare tutti gli altri file e directory sotto ~/temp/
che non sono elencati in il file kept.txt
, come farlo con un comando di shell, il più semplice è il migliore.Script shell: come eliminare tutti i file in una directory tranne quelli elencati in un file?
ad es.
La directory piace come di seguito:
$ tree temp/ -F
temp/
├── a/
├── b/
├── c/
│ ├── f2.txt
│ └── z/
├── f1.txt
└── kept.txt
Il contenuto di kept.txt
è:
$ more kept.txt
b
kept.txt
Per questo caso:
- voglio eliminare
a/
,c/
ef1.txt
. Perc/
, la directory stessa e tutto il contenuto secondario (file e directory) verranno eliminati. - In
kept.txt
, il formato è un elemento (file o directory) per riga.
Tranne che cancellerà anche 'kept.txt'. – cdarke
No, non lo cancellerà perché OP ha anche la riga 'kept.txt' nel file' kept.txt'. – anubhava
Mancato, mi dispiace. (era che na modifica?) – cdarke