Sotto una distribuzione del sistema operativo Linux, tutto è permesso. Tali ambienti di sistemi operativi open source ti portano attraverso le montagne russe su tutto ciò che c'è da sapere sui sistemi operativi.
Un aspetto chiave che definisce fortemente la necessità e la continua necessità di un sistema operativo è la gestione dei file. Nessun sistema operativo gestisce la gestione dei file meglio di Linux. Sia che tu voglia limitare, creare o migliorare la sicurezza del tuo sistema e dei file utente, Linux offre la migliore esperienza utente e prestazioni.
Il terminale Linux o l'interfaccia della riga di comando è un ambiente flessibile per la manipolazione di file tramite comandi associati alla creazione, ridenominazione, spostamento ed eliminazione di file. E se avessi imparato un altro tweak per la manipolazione dei file?
Questo articolo ci guiderà attraverso l'eliminazione dei file elencati in un altro file in un ambiente con sistema operativo Linux.
Scenario pratico
Verrà creato un albero di directory fittizio come riferimento. Considera la seguente struttura ad albero di directory:
$ tree
Dall'acquisizione dello schermo sopra, TestDel è la directory padre con il suo percorso assoluto /home/dnyce/TestDel .
$ pwd
Il TestDel directory ha altre quattro directory (docx_files , file_jpg , file_pdf e file_xml ) al suo interno popolato con file di diversi formati (docx, jpg, pdf e xml).
Ora, se vogliamo eliminare alcuni di questi file, dovremo prima elencare il loro percorso assoluto in un file. Creeremo un file di testo chiamato tobeDeleted.txt e aggiungi il percorso ad alcuni di questi file.
$ sudo nano tobeDeleted.txt
Ora che abbiamo il file da cui verranno eliminati i file elencati, ora possiamo esaminare le metodologie praticabili che avvieranno ed eseguiranno la loro eliminazione.
Metodo 1:utilizzo del comando xargs
Sotto gli xargs approccio, input da stdin vengono letti da xargs comando e quindi convertito per utilizzare argomenti che possono essere associati ad altri comandi.
Per eliminare i file elencati nel precedente tobeDeleted.txt file, implementeremo ed eseguiremo xargs comando nel modo seguente. Gli xargs il comando deve essere puntato al percorso assoluto di tobeDeleted.txt file di testo.
$ xargs -I{} rm -r "{}" < /home/dnyce/tobeDeleted.txt
Il comando legge il percorso assoluto dei file elencati e quindi controlla la loro posizione effettiva per l'inizio dell'eliminazione.
Il segnaposto "{}"
cita i percorsi dei nomi di file elencati per rm -r
comando da eliminare dopo -I
sostituisce la stringa con il successivo percorso del nome del file da eliminare.
Ora possiamo procedere ed eseguire il comando tree per essere certi che i file elencati siano stati effettivamente eliminati con il seguente output del comando cat come punto di riferimento.
$ cat tobeDeleted.txt
$ tree /home/dnyce/TestDel
Come puoi vedere, abbiamo 10 file rimanenti dei 13 file iniziali.
Metodo 2:utilizzo del comando sed
L'approccio compatto a una riga del sed ci aiuterà facilmente a eliminare i file elencati in un altro file. Aggiorna tobeDeleted.txt con nuovi entranti.
$ sudo nano tobeDeleted.txt
Il sed il comando da utilizzare per l'eliminazione dei file visualizzati nella schermata precedente sarà simile al seguente:
$ sed 's/.*/rm -r "\0"/' /home/dnyce/tobeDeleted.txt
Il segnaposto "\0"
punta al percorso del nome del file per l'eliminazione da parte di rm -r
comando dove s
tratta i percorsi dei file come elementi separati nell'elenco con estensioni di file variabili (.*)
.
Come avrai notato, il sed command non esegue l'effettiva eliminazione del file per noi, ma genera piuttosto i comandi di eliminazione appropriati che possiamo eseguire comodamente.
Esegui nuovamente l'albero comando per essere sicuri che i file vengano eliminati con il comando cat uscita come punto di riferimento.
$ cat /home/dnyce/tobeDeleted.txt
$ tree /home/dnyce/TestDel
Siamo riusciti a eliminare i file elencati.
Metodo 3:utilizzo del comando awk
Ancora una volta, aggiorna il tobeDeleted.txt file con i nuovi entranti.
$ sudo nano tobeDeleted.txt
Il awk il comando da eseguire è il seguente:
$ awk -v q='"' '$0 = "rm -r " q $0 q' /home/dnyce/tobeDeleted.txt
Il -v
assegna la variabile q
con valore segnaposto "
e '$0 = "rm -r " q $0 q'
genera il comando risultante per eliminare ciascuno dei file elencati.
Come notato, il awk command non esegue per noi anche l'effettiva cancellazione dei file elencati ma genera i comandi che possiamo utilizzare:
Esegui l'albero comando in riferimento al comando cat output per confermare l'eliminazione dei file.
$ cat /home/dnyce/tobeDeleted.txt
$ tree /home/dnyce/TestDel
Hai aggiunto con successo una nuova abilità alle tue routine di gestione dei file Linux.