Shell Unix:Gestione di file e cartelle

← Torna ad Shell Unix

Argomenti correlati

File e Cartelle

cd <cartella>
si muove alla <cartella> (con path relativo o assoluto)
cd ..
si muove alla cartella superiore
cd -
si torna alla cartella dove si era prima
cp
copia file e directory, questo comando ci permette di copiare un file o una directory (copy).
-r copia le directory e le sottodirectory ricorsivamente
-f forza la copia sovrascrivendo i file
-i interattivo, chiede prima di sovrascrivere
Per aprofondire Il comando cp →
cp file1 cart1
copia file1 dentro la directory cart1
cp -r cart1 cart2
copia tutta la directory cart1 dento a cart2
mv
muove o rinomina un file o una directory, questo comando è possibile spostare file o directory (move). Può essere anche utilizzato per rinominare un file o una directory.
-i chiede la conferma
-f forza la copia sovrascrivendo i file
Per aprofondire Il comando mv→
mv vecchio nuovo
rinomina il file vecchio in nuovo
mv file1 cart1
sposta il file file1 dentro la directory cart1
Nota: il comando mv non sovrascrive le cartelle, per ovviare a questo, si puñ utilizzare il comando di copia cp.
mkdir <cartella>
crea la cartella
-p crea anche i parent se non esistono
rmdir <cartella>
elimina la cartella, se è vuota
rm <file>
elimina il file
-fr genera un'aziomne ricorsiva, quindi:
rm -fr <cartella>
elimina la cartella e il suo contenuto ricorsivamente
ln -s <file_orifginale> <link>
crea un link simbolico chiamato <link> che punta a <file_orifginale>
ln -s /root/bin/firewall.sh /etc/init.d/firewall
ls
elenca file e cartelle
-l mostra i file in ordine alfabetico
-a mostra anche i file nascosti
-F Inserisce uno slash alla fine del nome delle cartelle contenute nella directory e un asterisco alla fine del nome dei file eseguibili
-r inverte il senso dell’ordinamento
-t ordina secondo l’orario di modifica.

Per avere la lista delle sole directory: ls | grep ^d

ll
è un alias frequente che indica ls -l
ll –tr
ordina i file per data, utile per visionare gli ultimi file scritti.
touch
crea un file vuoto
> <nome-file>
utilizzato dopo un comando, serve per creare il file specificato con l'output (di testo) del comando.
>> <nome-file>
utilizzato dopo un comando, serve per aggiungere l'output (di testo) del comando al file specificato.
| (pipe)
serve per aggiungere un comando su una stessa linea di comando. Attraverso questa opzione il sistema applicherà il secondo comando all'output del primo, senza la necessità di passare per un file di passaggio.

GREP

grep <schema> <nome_file>
serve per cercare all'interno di un file quelle linee che rispettano un certo schema.
-v recupera le linee che non corrispondono allo schema
-n recupera la linea corrispondente allo schema e riporta anche il numero della linea
-l produce in output una lista dei files che contengono almeno una linea corrisponedente allo schema (utile nel caso di ricerche fatte su più file)
-c produce in output il conteggio delle linee corrispondenti allo schema all'interno del file o dei file oggetto della ricerca
-i rende la ricerca case-insensitive
-f È un'opzione molto interessante. Da inserire al posto dello schema seguita da un nome di file. Utilizza le righe contenute nel file come schema per l'operazione di ricerca. Utilizzato in concomitanza con l'opzione -v può servire per eliminare da un file tutte le righe che coincidono con quelle contenute in un altro file.
GREP con più argomenti in OR
.... | grep -E 'arg1|arg2'

MORE

more
serve per visualizzare l'output di qualsiasi comando una schermata o una riga alla volta.
cat file_1 | more = more file_1
more non è esattamente un comando, bensì un vero e proprio programma.
h visualizza una schermata di aiuto che spiega i tasti da usare all'interno di more
Comandi in esecuzione di more:
SPAZIO passa alla schermata successiva
b passa alla schermata precedente
INVIO avanza di una riga

Ciclo sulle cartelle presenti

for DIR in $(ls -d */)
do
   echo $DIR
done

Per contare i files all’interno di una directory

Per contare i files all’interno di una directory linux il comando è:

find [directory] -type f | wc -l

oppure

ls -l [directory] | grep ^- | wc -l
  • ls -l fa la lista dettagliata del contenuto della directory
  • grep ^- filtra l’output del primo comando mostrando tutte le righe che iniziano con –
  • wc -l conta le linee in output dai primi 2 comandi

Il modo più semplice per contare i file in una directory è elencare un file per riga con ls e convogliare l’output per contare le righe wc

ls -1 DIR_NAME | wc -l

Questo comando restituisce la somma di tutti i file tranne quelli nascosti (dotfile), incluse directory e collegamenti simbolici.

Se si desidera contare solo i file e non includere le directory, è possibile utilizzare questo comando:

ls -1p DIR_NAME | grep -v / | wc -l

Se voleste contare solo le directory potreste lanciare il comando:

ls -l [directory] | grep ^d | wc -l

Ricorsivamente ...

Numero di file in una cartella (ricorsivo)

find [directory] -type f | wc -l

Numero di cartelle in una cartella (ricorsivo)

find [directory] -type d | wc -l

fonti:

Ricerca

Per la ricerca si utilizza il comando find, ecco alcuni esempi che ne spiegano l'utilizzo:

cerca e visualizza i file nella home con estensione NEF e con dimensione maggiore di 7Mb

find /home -iname "*.NEF" -and -size +7M 

cerca e visualizza i file nella home con dimensione maggiore di 7Mb che non hanno estensione NEF

find /home -size +7M ! -iname ".*NEF"

cerca e visualizza i file nella home con dimensione maggiore di 7Mb o che hanno estensione NEF

find /home -size +7M or -iname ".*NEF"

per cercare file che hanno almeno 30 minuti

find /home -mmin +30

fonti:

Ricerca e rimozione

Applicando gli stessi criteri di prima per cercare i file, è possibile eseguire un'azione su di essi

find dir-name criteria action

dove:

  • dir-name è la cartella su cui lavorare;
  • criteria sono i criteri di filtraggio dei file;
  • action è l'azione da intraprendere.

Es: per cancellare i file più vecchi di 60 giorni dalla cartella corrente:

find . -mtime +60 -exec rm -fr {} \;


fonte: https://www.cyberciti.biz/faq/linux-unix-how-to-find-and-remove-files/

Permessi e proprietari

Per assegnare i permessi su file e cartelle si usa il comando chmod.

chmod <valore> <oggetto>
assegna i permessi <valore> a <oggetto>

Notazione numerica:

1 = x (esecuzione)
2 = w (scrittura)
4 = r (lettura)

Combinandoli:

3 = xw
5 = xr
6 = rw
7 = xrw

(es: 766 assegna 7 (xrw) al proprietario, 6 (rw) al gruppo e 6 (rw) a tutti gli altri)

chmod a+x <fileName>
aggiunge(+) il permesso di eseguire(x) il file a tutti.
chown <valore> <oggetto>
cambia il proprietario di <oggetto> a <valore>
fuser -u <fileName>
controlla chi sta usando il file

Filesystem

du -sh <cartella>
mostra le informazioni sulla dimensione di una cartella e delle sue sottodirectory (./* questa).
h in forma leggibile
s si ferma al primo livello, sommando il contenuto delle sottodirectory
history –c
per cancellare la cronologia dei comani
blkid
consente di visualizzare informazioni sui dispositivi a blocchi disponibili.
Per ciascun dispositivo a blocchi elencato, il comando blkid visualizza gli attributi disponibili come l’identificatore univoco universale (UUID), il tipo di file system

Per utilizzare dischi formattati in NTFS è necessario installare il pacchetto di librerie ntfs-3g.

Zip e Unzip

fonte http://www.cyberciti.biz/tips/how-can-i-zipping-and-unzipping-files-under-linux.html Utilizzando il programma zip e unzip

apt-get install zip unzip

ziping files/directories

zip data *

Crea il file archivio data.zip e vi inserisce tutti i file presenti nella directory corrente in forma compressa

zip -r data *

Per farlo agire ricorsivamente tra le sottocartelle

unzip -l pics.zip

Per avere la lista dei file

unziping files/directories examples

unzip  pics.zip

Estrae tutti i file nella directory corrente

unzip -tq pics.zip

Per avere un sommario dei file estratti

unzip pics.zip cv.doc

Per estrarre solo il file cv.dov

unzip pics.zip  -d /tmp

Per estrarre solo i file nella directory /tmp

Verifica la presenza di File o Directory

Esistono vari casi un cui può essere molto utile riuscire a verificare se un file o una Directory esiste oppure no dentro nel nostro Sistema Operativo GNU/Linux.

Questo sarà possibile con usando una verifica condizionale IF :

if [ -f nomefile_test ]; then echo "Il file esiste! "; else echo "Il file non esiste! "; fi

al posto di "nomefile_test" digitare il nome del file di cui si vuole verificare la presenza.

Se si vuole creare uno script di modo che sia più semplice eseguirlo, basta creare un file con il comando

vi testfile.sh

e incollare le linee in basso:

#!/bin/bash
if [ -f nomefile_test ]; then
   echo "Il file esiste!"
else
   echo "Il file non esiste!"
fi

E' possibile fare la stessa cosa con le directory usando questa forma:

if [ -d nomedirectory_test ]; then echo "La directory esiste! "; else echo "La directory non esiste! "; fi

Se si vuole creare uno script di modo che sia più semplice eseguirlo, basta creare un file con il comando:

vi testdirectory.sh

e incollare le linee in basso:

#!/bin/bash
if [ -f nomedirectory_test ]; then
   echo "La directory esiste!"
else
   echo "La directory non esiste!"
fi

fonte: http://www.vplug.it/vplug/Blog?id=19

Trasformare il nome dei file

Ecco il comando per trasformare il nome di tutti i file di una cartella facendoli diventare minuscoli

for i in `ls *`; do mv "$i" "$(echo $i | tr [:upper:] [:lower:])"; done

Il comando DD

L’utility dd copia il file di input specificato nell’uscita specificata con possibili conversioni. Lo standard input e output vengono utilizzati di default. Le dimensioni dei blocchi di input e output possono essere specificati per sfruttare raw physical I/O. Le dimensioni sono specificate in byte, un numero può terminare con k, b, o w per indicare la moltiplicazione per 1024, 512, o 2, rispettivamente. I numeri possono anche essere separati da x per indicare la moltiplicazione.

Esempi:

dd if=/dev/sda of=/dev/sdb

Questo comando farà la esatta copia di /dev/sda in /dev/sdb

dd if=/dev/dvd of=dvd.iso

Questo comando farà una copia del DVD nel file dvd.iso

dd if=/dev/zero of=/dev/sda

Riempie la partizione /dev/sda con zero, utile per far scomparire una partizione fisica (o logica).

dd if=/dev/hda | gzip > hda.img.gz

Questo comando farà una copia di /dev/hda e attraverso una pipe la passa al programma di compressione gzip.

Fonte http://linuxaria.com/howto/the-dd-command-on-linux-terminal?lang=it