GNU/Linux >> Linux Esercitazione >  >> Linux

Come rimuovere file e directory in Linux

Questo articolo continua una serie di articoli sulla shell di Linux e copre i tre modi più utili per eliminare file e directory. Abbiamo anche trattato casi eccezionali come l'eliminazione di directory con un numero enorme di file all'interno, l'eliminazione di file o directory con caratteri speciali nei loro nomi. Migliora le tue competenze su Linux in soli 5 minuti.

comando “rmdir”

Prima di utilizzare rmdir comando, devi sapere che non recupererai facilmente gli oggetti eliminati.

Ora apri il terminale della riga di comando se stai usando Linux o macOS. Se utilizzi Windows, puoi utilizzare il sottosistema Windows per Linux (WSL).

Prima di eliminare la directory, creiamola prima:

$ mkdir /tmp/docs

Ora eliminiamolo con il nome /tmp/docs utilizzando il seguente comando:

$ rmdir /tmp/docs

dir.rm è un comando per rimuovere le directory vuote. È abbastanza utile, poiché sei protetto dall'eliminazione di qualcosa di importante dal tuo file system.

Convalidiamo questo comportamento inserendo un file all'interno di una directory, che vorremmo eliminare:

$ mkdir -p /tmp/docs

$ touch /tmp/docs/my_file

$ tree /tmp/docs

/tmp/docs
└── my_file

0 directories, 1 file

Se la tua directory non è vuota, riceverai il seguente errore:

$ rmdir /tmp/docs
rmdir: /tmp/docs: Directory not empty

Per eliminare la directory, che contiene file, devi utilizzare il rm comando:

$ rm -rf /tmp/docs

Eliminazione di più directory utilizzando caratteri jolly

Tutti i comandi della console in Linux possono elaborare file e cartelle utilizzando i caratteri jolly (*) nel nome del file o della cartella. Eliminiamo la seguente struttura di cartelle:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
└── dir3

3 directories, 0 files

Per eliminare tutte le directory, che inizia dalla dir dobbiamo usare il seguente comando:

$ rmdir /tmp/docs/dir*

Ecco il risultato atteso:

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

Comando "rm"

Il rm command è un comando generico che può eliminare non solo le directory ma anche i file. Ma il comportamento predefinito di rm il comando non ti consente di eliminare alcuna cartella. Puoi utilizzare -r-R argomenti per eliminare le directory, incluse le sottodirectory.

Immaginiamo di avere la seguente struttura del file system:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

Se desideri eliminare il /tmp/docs directory completamente, utilizzare il seguente comando:

$ rm -rf /tmp/docs

Dove:

  • -r – un tentativo di rimuovere tutte le sottodirectory da una directory particolare.
  • -f – un tentativo di rimuovere i file senza previa conferma o autorizzazione.

/bin/rm:elenco di argomenti troppo lungo

È possibile che venga visualizzato questo messaggio di errore quando si tenta di eliminare una directory con molti file. Questo errore si verifica a causa del numero di file forniti a rm comando è maggiore del limite di sistema sulla dimensione dell'argomento della riga di comando.

Il modo più semplice per eliminare tale cartella è utilizzare trova comando per eliminare prima tutti i file, quindi eliminare la directory stessa:

$ find /tmp/docs -type f -delete

$ rm -r /tmp/docs

Qui:

  • /tmp/docs – directory per la ricerca.
  • -digita f – indica all'utilità di ricerca di cercare solo i file.
  • -elimina – indica all'utilità di ricerca di eliminare i risultati trovati.

Puoi anche creare una cartella vuota e utilizzare rsync utilità:

$ mkdir empty_dir

$ rsync -a --delete empty_dir/ /tmp/docs/

Questo consuma CPU, ma è il modo più veloce per pulire /tmp/docs directory.

comando "trova"

Il comando trova è un'utilità della riga di comando di ricerca multiuso, che richiede un articolo separato da solo, ma nel nostro caso lo useremo per eliminare le cartelle.

Elimina utilizzando il modello nel nome

Eliminiamo tutte le directory in base allo schema dir* nei nomi delle directory nidificate:

$ tree /tmp/docs
/tmp/docs
├── dir1
│   └── my_file1
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

3 directories, 3 files

Usa il seguente comando per farlo:

$ find /tmp/docs -type d -name 'dir*' -exec rm -rf {} +

$ tree /tmp/docs
/tmp/docs

0 directories, 0 files

Qui, il trova il comando restituirà tutte le directory nidificate il cui nome inizia dalla dir :

$ find /tmp/docs -type d -name 'dir*'
/tmp/docs/dir2
/tmp/docs/dir3
/tmp/docs/dir1

E poi esegue il già familiare rm -rf comando per ogni risultato (ecco perché stiamo usando {} + sequenza).

Rimuovi tutte le directory vuote nella struttura delle cartelle

In molti casi, potresti voler eliminare solo le cartelle vuote all'interno della struttura delle cartelle. Eliminiamo dir1altra_dir dal seguente esempio:

$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
│   └── my_file2
├── dir3
│   └── my_file3
└── other_dir

4 directories, 2 files

Ecco come farlo:

$ find /tmp/docs -type d -empty -delete

$ tree /tmp/docs
/tmp/docs
├── dir2
│   └── my_file2
└── dir3
    └── my_file3

2 directories, 2 files

Elimina i file con caratteri speciali (per inode)

Se il nome della tua directory contiene caratteri speciali o è composto da parole non inglesi, allora di solito rmrmdir il comando potrebbe non funzionare per te. In tal caso, puoi eliminare quella directory utilizzando il suo inode.

Inode – è un numero di nodo dell'indice che rappresenta un file o una directory sul file system.

Puoi trovare il numero di inode del file o della directory usando il seguente comando:

$ ls -il /tmp/docs
total 0
8669007889 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:48 dir2
8669007891 drwxr-xr-x  3 amaksimov  wheel  96 Dec  1 18:46 dir3

In questo esempio, dir2 la cartella ha inode 8669007889 numero.

Ora possiamo utilizzare queste informazioni per eliminarlo:

$ find /tmp/docs -inum 8669007889 -exec rm -rf {} +

Qui:

  • -inum – indica all'utilità di ricerca di cercare l'oggetto del file system con il numero di inode 8669007889 .
  • -exec rm -rf – dice a find utility di chiamare rm con -rm argomenti per ogni risultato ({} + ).

Riepilogo

In questo articolo abbiamo descritto tre modi per eliminare le directory in Linux. Abbiamo anche trattato casi speciali come l'eliminazione di cartelle o directory di grandi dimensioni con caratteri speciali nei loro nomi.

Ci auguriamo che trovi utile questo articolo. Se sì, per favore, aiutaci a diffonderlo nel mondo.

Se conosci altri casi d'uso interessanti, che potrebbero essere trattati dall'articolo, ti preghiamo di contattarci nella sezione commenti qui sotto.


Linux
  1. Come cercare e rimuovere le directory in modo ricorsivo su Linux

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

  3. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  4. UNIX / Linux :Qual è il permesso corretto delle directory /tmp e /var/tmp

  5. Come trovare ed eliminare directory e file vuoti in Linux

Come comprimere file e directory in Linux

Come rimuovere (eliminare) la directory in Linux

Come trovare ed eliminare directory vuote in Linux

Come rimuovere file e directory su terminale Linux

Come rimuovere/eliminare file in Linux usando il comando rm

Come eliminare file e directory utilizzando la riga di comando di Linux