GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare i file elencati in un altro file in Linux

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.


Linux
  1. Come convertire file in codifica UTF-8 in Linux

  2. Come eliminare il file di posta principale (cassetta postale) in Linux

  3. Come eliminare file e directory in Linux dalla riga di comando

  4. Come visualizzare o modificare l'ACL nei file Linux

  5. Come si eliminano i file più vecchi di una data specifica in Linux?

Come troncare (svuotare) i file in Linux

Come rinominare uno o più file in Linux

Come decomprimere i file gz in Linux

Come trovare file basati su timestamp in Linux

Come rimuovere/eliminare file in Linux usando il comando rm

Come comprimere un file in Linux