Linux Professional Institute Learning Logo.
Torna al contenuto principale
  • Home
    • Tutte le Risorse
    • LPI Learning Materials
    • Collabora
    • Publishing Partner
    • Diventa un Publishing Partner
    • FAQ
    • Collaboratori
    • Traduzioni
    • Contatto
  • LPI.org
103.3 Lezione 2
Argomento 101: L'Architettura di Sistema
101.1 Determinare e Configurare le Impostazioni dell'Hardware
  • 101.1 Lezione 1
101.2 Avviare il sistema
  • 101.2 Lezione 1
101.3 Modificare runlevel / target di avvio e spegnere o riavviare il sistema
  • 101.3 Lezione 1
Argomento 102: Installazione di Linux e Gestione dei Pacchetti
102.1 Progettare il layout del disco rigido
  • 102.1 Lezione 1
102.2 Installare un boot manager
  • 102.2 Lezione 1
102.3 Gestire le librerie condivise
  • 102.3 Lezione 1
102.4 Utilizzare la gestione dei pacchetti Debian
  • 102.4 Lezione 1
102.5 Utilizzare la gestione dei pacchetti RPM e YUM
  • 102.5 Lezione 1
102.6 Linux come sistema virtualizzato
  • 102.6 Lezione 1
Argomento 103: GNU e Unix Commands
103.1 Lavorare con la Command Line
  • 103.1 Lezione 1
  • 103.1 Lezione 2
103.2 Elaborare flussi di testo utilizzando i filtri
  • 103.2 Lezione 1
103.3 Eseguire la gestione di base dei file
  • 103.3 Lezione 1
  • 103.3 Lezione 2
103.4 Utilizzare flussi, pipe e reindirizzamenti
  • 103.4 Lezione 1
  • 103.4 Lezione 2
103.5 Creare, controllare e terminare i processi
  • 103.5 Lezione 1
  • 103.5 Lezione 2
103.6 Modificare le priorità di esecuzione del processo
  • 103.6 Lezione 1
103.7 Cercare file di testo utilizzando espressioni regolari
  • 103.7 Lezione 1
  • 103.7 Lezione 2
103.8 Modifica base di un file
  • 103.8 Lezione 1
Argomento 104: Dispositivi, il File System Linux, il Filesystem Hierarchy Standard
104.1 Creare partizioni e filesystem
  • 104.1 Lezione 1
104.2 Mantenere l'integrità dei filesystem
  • 104.2 Lezione 1
104.3 Verificare il montaggio e lo smontaggio dei filesystem
  • 104.3 Lezione 1
104.5 Gestire le autorizzazioni e la proprietà dei file
  • 104.5 Lezione 1
104.6 Creare e modificare collegamenti hard e soft
  • 104.6 Lezione 1
104.7 Trovare i file di sistema e collocarli nella posizione corretta
  • 104.7 Lezione1
How to get certified
  1. Argomento 103: GNU e Unix Commands
  2. 103.3 Eseguire la gestione di base dei file
  3. 103.3 Lezione 2

103.3 Lezione 2

Certificazione:

LPIC-1

Versione:

5.0

Argomento:

103 Comandi GNU e Unix

Obiettivo:

103.3 Eseguire la gestione base sui file

Lezione:

2 di 2

Introduzione

Come Ricercare File

Man mano che si utilizza la macchina, i file crescono progressivamente in numero e dimensione. A volte diventa difficile individuare un particolare file. Fortunatamente Linux fornisce find per cercare e individuare rapidamente i file. find utilizza la seguente sintassi:

find STARTING_PATH OPTIONS EXPRESSION
STARTING_PATH

definisce la directory in cui inizia la ricerca.

OPTIONS

controlla il comportamento e aggiunge criteri specifici per ottimizzare il processo di ricerca.

EXPRESSION

definisce la query di ricerca.

$ find . -name "myfile.txt"
./myfile.txt

Il percorso iniziale in questo caso è la directory corrente. L’opzione -name specifica che la ricerca è basata sul nome del file. myfile.txt è il nome del file da cercare. Quando si utilizza il globbing dei file, assicurarsi di includere l’espressione tra virgolette:

$ find /home/frank -name "*.png"
/home/frank/Pictures/logo.png
/home/frank/screenshot.png

Questo comando trova tutti i file che terminano con .png a partire dalla directory /home/frank/. L’uso dell’asterisco (*) è stato trattato in una lezione precedente

Utilizzo dei Criteri per Velocizzare la Ricerca

Usa find per individuare i file in base a type, size o time. Specificando una o più opzioni, i risultati desiderati si ottengono in minor tempo.

Le opzioni per la ricerca di file in base al tipo includono:

-type f

ricerca di file.

-type d

ricerca di directory.

-type l

ricerca di link simbolici.

$ find . -type d -name "example"

Questo comando trova tutte le directory, nella directory corrente e sottostanti, che hanno il nome example.

Altri criteri che potrebbero essere usati con find includono:

-name

esegue una ricerca basata sul nome dato.

-iname

effettua la ricerca in base al nome non considerando maiscole e minuscole (myFile diventa uguale a MYFILE).

-not

restituisce quei risultati che non corrispondono allo scenario di test.

-maxdepth N

ricerca nella directory corrente così come nelle sottodirectory a N livelli sottostanti.

Individuazione dei File in Base all’Ora di Modifica

find permette anche di filtrare una gerarchia di directory in base a quando il file è stato modificato:

$ sudo find / -name "*.conf" -mtime 7
/etc/logrotate.conf

Questo comando cercherà tutti i file nell’intero file system (il percorso iniziale è la directory principale, cioè /) che terminano con i caratteri .conf e sono stati modificati negli ultimi sette giorni. Questo comando richiede privilegi elevati per accedere a tutte le directory a partire dalla base della struttura delle directory del sistema, da qui l’uso di sudo. L’argomento passato a mtime rappresenta il numero di giorni dall’ultima modifica del file.

Individuazione dei File per Dimensione

find può anche individuare i file per dimensione. Per esempio, cercando file più grandi di 2G in / var:

$ sudo find /var -size +2G
/var/lib/libvirt/images/debian10.qcow2
/var/lib/libvirt/images/rhel8.qcow2

L’opzione -size mostra i file di dimensioni corrispondenti all’argomento passato. Alcuni argomenti di esempio includono:

-size 100c

file che sono esattamente di 100 byte.

-size +100k

file più grandi di 100 kilobyte.

-size -20M

file di dimensioni inferiori a 20 megabyte.

-size + 2G

file più grandi di 2 gigabyte.

Note

Per trovare file vuoti possiamo usare: find . -size 0c o find . -empty.

Agire sul Set di Risultati

Una volta terminata la ricerca, è possibile eseguire un’azione sull’insieme risultante usando -exec:

$ find . -name "*.conf" -exec chmod 644 '{}' \;

Questo comando filtra ogni oggetto nella directory corrente (.) e sottostanti per i nomi di file che terminano con .conf; successivamente esegue chmod 644 per modificare i permessi degli stessi file.

Per ora, non preoccuparti del significato di '{}' \; perchè verrà discusso più avanti.

Usare grep per filtrare i file in base al contenuto

grep viene utilizzato per cercare una o più occorrenze di una parola chiave.

Considera una situazione in cui dobbiamo trovare file in base al contenuto:

$ find . -type f -exec grep "lpi" '{}' \; -print
./.bash_history
Alpine/M
helping/M

Questo comando cercherà ogni oggetto nella gerarchia di directory corrente (.) che è un file (-type f) e quindi esegue il comando grep "lpi" per ogni file che soddisfa le condizioni. I file che soddisfano queste condizioni vengono visualizzati sullo schermo (-print). Le parentesi graffe ({}) sono un segnaposto per i risultati della corrispondenza di find. I caratteri {} sono racchiusi tra virgolette singole (') per evitare di passare file greppati con nomi contenenti caratteri speciali. Il comando -exec termina con un punto e virgola (;), che dovrebbe essere preceduto dal carattere di escape (\) per evitare l’interpretazione da parte della shell.

L’aggiunta dell’opzione -delete alla fine di un’espressione elimina tutti i file che corrispondono: questa opzione dovrebbe essere utilizzata quando si è certi che i risultati corrispondono solo ai file che si desidera eliminare.

Nell’esempio seguente, find individua tutti i file nella gerarchia a partire dalla directory corrente quindi elimina tutti i file che terminano con i caratteri .bak:

$ find . -name "*.bak" -delete

Archiviazione di File

Il Comando tar (Archiviazione e Compressione)

Il comando tar, abbreviazione di “tape archive(r)”, è usato per creare archivi tar convertendo un gruppo di file in un archivio. Gli archivi vengono creati in modo da spostare o eseguire il backup facilmente di un gruppo di file. Pensa a tar come a uno strumento che crea un collante su cui i file possono essere allegati, raggruppati e spostati facilmente.

tar ha anche la capacità di estrarre archivi tar, visualizzare un elenco dei file inclusi nell’archivio e aggiungere file ulteriori a un archivio esistente.

La sintassi del comando tar è la seguente:

tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(S)]
OPERATION

È consentito e richiesto una sola operazione alla volta. Le operazioni più utilizzate sono:

--create (-c)

Crea un nuovo archivio tar.

--extract (-x)

Estrae l’intero archivio o uno o più file da un archivio.

--list (-t)

Visualizza un elenco dei file inclusi nell’archivio.

OPTIONS

Le opzioni utilizzate più di frequente sono:

--verbose (-v)

Mostra i file elaborati dal comando tar.

--file=nome-archivio (-f nome-archivio)

Specifica il nome del file di archivio.

ARCHIVE_NAME

Il nome dell’archivio.

FILE_NAME(S)

Un elenco separato da spazi di nomi di file da estrarre. In caso contrario, viene estratto l’intero archivio.

Creazione di un Archivio

Supponiamo di avere una directory chiamata stuff nella directory corrente e vogliamo salvarla in un file chiamato archive.tar. Dovremmo eseguire il seguente comando:

$ tar -cvf archive.tar stuff
stuff/
stuff/service.conf

Ecco cosa significano effettivamente queste opzioni:

-c

Crea un archivio.

-v

Mostra l’avanzamento nel terminale durante la creazione dell’archivio, noto anche come modalità “verbosa”. La -v è sempre opzionale in questi comandi, ma utile.

-f

Permette di specificare il nome del file dell’archivio.

In generale per archiviare una singola directory o un singolo file su Linux, utilizziamo:

tar -cvf NAME-OF-ARCHIVE.tar /PATH/TO/DIRECTORY-OR-FILE
Note

tar funziona in modo ricorsivo. Eseguirà l’azione richiesta su ogni directory successiva all’interno della directory specificata.

Per archiviare più directory contemporaneamente, elenchiamo tutte le directory delimitandole da uno spazio nella sezione /PATH/TO/DIRECTORY-OR-FILE:

$ tar -cvf archive.tar stuff1 stuff2

Questo produrrebbe un archivio di stuff1 e stuff2 in archive.tar

Estrarre un Archivio

Possiamo estrarre un archivio usando tar:

$ tar -xvf archive.tar
stuff/
stuff/service.conf

Questo estrarrà il contenuto di archive.tar nella directory corrente.

Questo comando è lo stesso del comando di creazione dell’archivio usato sopra, ad eccezione dell’opzione -x che sostituisce l’opzione -c.

Per estrarre il contenuto dell’archivio in una directory specifica usiamo -C:

$ tar -xvf archive.tar -C /tmp

Questo estrarrà il contenuto di archive.tar nella directory / tmp.

$ ls /tmp
stuff

Comprimere con tar

Il comando GNU tar incluso con le distribuzioni Linux può creare un archivio .tar e comprimerlo con la compressione gzip o bzip2 in un unico comando:

$ tar -czvf name-of-archive.tar.gz stuff

Questo comando creerebbe un file compresso usando l’algoritmo gzip (-z).

Sebbene la compressione gzip sia usata più frequentemente per creare file .tar.gz o .tgz, tar supporta anche la compressione bzip2. Questo permette la creazione di file compressi bzip2, spesso chiamati file .tar.bz2, .tar.bz o tbz.

Per farlo, sostituiamo -z per gzip con -j per bzip2:

$ tar -cjvf name-of-archive.tar.bz stuff

Per decomprimere il file, sostituiamo -c con -x, dove x sta per “extract”:

$ tar -xzvf archive.tar.gz

gzip è più veloce, ma generalmente comprime un po' meno, quindi si ottiene un file leggermente più grande. bzip2 è più lento, ma comprime un po' di più. In generale, però, gzip e bzip2 sono praticamente la stessa cosa ed entrambi funzioneranno in modo simile.

In alternativa possiamo applicare la compressione gzip o bzip2 usando il comando gzip per le compressioni gzip e il comando bzip2 per le compressioni bzip. Per esempio, per applicare la compressione gzip, usa:

gzip FILE-TO-COMPRESS
gzip

crea il file compresso con lo stesso nome ma con un finale .gz.

gzip

rimuove i file originali dopo aver creato il file compresso.

Il comando bzip2 funziona in modo simile.

Per decomprimere i file usiamo gunzip o bunzip2 a seconda dell’algoritmo usato per comprimere un file.

Il Comando cpio

cpio sta per “copy in, copy out”. Viene utilizzato per elaborare file di archivio come file \* .cpio o * .tar.

cpio esegue le seguenti operazioni:

  • Copiare file in un archivio.

  • Estrarre file da un archivio.

Prende l’elenco dei file dallo standard input (principalmente l’output da ls).

Per creare un archivio cpio, usiamo:

$ ls | cpio -o > archive.cpio

L’opzione -o dice a cpio di creare un output. In questo caso, il file di output creato è archive.cpio. Il comando ls elenca i contenuti della directory corrente che devono essere archiviati.

Per estrarre l’archivio utilizziamo:

$ cpio -id < archive.cpio

L’opzione -i viene utilizzata per eseguire l’estrazione. L’opzione -d creerà cartelle di destinazione se necessario. Il carattere < rappresenta lo standard input. Il file di input da estrarre è archive.cpio.

Il Comando dd

dd copia i dati da una posizione all’altra. La sintassi della riga di comando di dd è diversa da molti altri programmi Unix, utilizza la sintassi option=value per le sue opzioni della riga di comando piuttosto che i formati standard GNU -option value o --option=value:

$ dd if=oldfile of=newfile

Questo comando copia il contenuto di oldfile in newfile, dove if= è il file di input e of= si riferisce al file di output.

Note

Il comando dd tipicamente non mostrerà nulla sullo schermo fino a quando il comando non sarà terminato. Fornendo l’opzione status=progress, la console mostrerà la quantità di lavoro svolto dal comando. Per esempio: dd status=progress if=oldfile of=newfile.

dd è anche usato per cambiare i dati in maiuscolo/minuscolo o scrivere direttamente su dispositivi a blocchi come /dev/sdb:

$ dd if=oldfile of=newfile conv=ucase

Questo copierà tutto il contenuto di oldfile in newfile e renderà tutto il testo in maiuscolo.

Il comando seguente eseguirà il backup dell’intero disco rigido situato in /dev/sda in un file chiamato backup.dd:

$ dd if=/dev/sda of=backup.dd bs=4096

Esercizi Guidati

  1. Considera il seguente elenco:

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • Che tipo di file produrrebbe questo comando?

    • In quale directory inizia la ricerca?

  2. Un utente desidera comprimere la sua cartella di backup. Lui usa il seguente comando:

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    Quale opzione manca per comprimere il backup usando l’algoritmo gzip?

Esercizi Esplorativi

  1. In qualità di amministratore di sistema, è necessario eseguire controlli regolari per rimuovere file voluminosi. Questi file voluminosi si trovano in / var e terminano con un’estensione .backup.

    • Scrivi il comando, usando find, per individuare questi file:

    • Un’analisi delle dimensioni di questi file rivela che vanno da 100M a 1000M. Completa il comando precedente con queste nuove informazioni, in modo da poter individuare quei file di backup che vanno da 100M a 1000M:

    • Infine, completa questo comando, con l’azione di eliminazione in modo che questi file vengano rimossi:

  2. Nella directory /var, esistono quattro file di backup:

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • Utilizzando tar, specificare il comando che creerebbe un file di archivio con il nome db-first-quarter-2018.backup.tar:

    • Usando tar, specifica il comando che creerebbe l’archivio e comprimilo usando gzip. Tieni presente che il nome del file risultante dovrebbe terminare con .gz:

Sommario

In questa lezione abbiamo imparato:

  • Come trovare file con find.

  • Come aggiungere criteri di ricerca in base all’ora, al tipo di file o alla dimensione fornendo un argomento a find.

  • Come agire su un set restituito.

  • Come archiviare, comprimere e decomprimere file usando tar.

  • Elaborazione di archivi con cpio.

  • Copia di file con dd.

Risposte agli Esercizi Guidati

  1. Considera il seguente elenco::

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • Che tipo di file produce questo comando?

      Directories.

    • In quale directory inizia la ricerca?

      /home/frank/Documents

  2. Un utente desidera comprimere la sua cartella di backup. Lui usa il seguente comando:

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    Quale opzione manca per comprimere il backup usando l’algoritmo gzip?

    L’opzione -z.

Risposte agli Esercizi Esplorativi

  1. In qualità di amministratore di sistema, è necessario eseguire controlli regolari per rimuovere file voluminosi. Questi file voluminosi si trovano in / var e terminano con un’estensione .backup.

    • Scrivi il comando, usando find, per individuare questi file:

      $ find /var -name *.backup
    • Un’analisi delle dimensioni di questi file rivela che vanno da 100M a 1G. Completa il comando precedente con queste nuove informazioni, in modo da poter individuare quei file di backup che vanno da 100M a 1G:

      $ find /var -name *.backup -size +100M -size -1G
    • Infine, completa questo comando, con l’azione di eliminazione in modo che questi file vengano rimossi:

      $ find /var -name *.backup -size +100M -size -1G -delete
  2. Nella directory /var, esistono quattro file di backup:

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • Utilizzando tar, specificare il comando che creerebbe un file di archivio con il nome db-first-quarter-2018.backup.tar:

      $ tar -cvf db-first-quarter-2018.backup.tar db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup
    • Usando tar, specifica il comando che creerebbe l’archivio e comprimilo usando gzip. Tieni presente che il nome del file risultante dovrebbe terminare con .gz:

      $ tar -zcvf db-first-quarter-2018.backup.tar.gz db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

Prossima Lezione

103.4 Utilizzare flussi, pipe e reindirizzamenti (103.4 Lezione 1)

Leggi la prossima Lezione

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

LPI è una organizzazione non-profit.

© 2025 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 250,000 titolari di Certificazione, è il primo e il più grande ente di Certificazione Open Source e Linux vendor-neutral. LPI ha professionisti certificati in oltre 180 Paesi, offre i suoi Esami in più lingue e ha centinaia di Partner di formazione in tutto il mondo.

La nostra missione è promuovere l'uso dell'Open Source supportando le persone che vi lavorano.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contattaci
  • Privacy & Cookie Policy

Trovato un errore? Per favore scrivi a contattaci.

© 1999–2025 The Linux Professional Institute Inc. Tutti i diritti riservati.