# Crea file vuoto
touch nomefile.txt
# Crea un file vuoto o aggiorna timestamp se esiste
# Crea più file contemporaneamente
touch file1.txt file2.txt file3.txt
# Crea tre file vuoti
# Crea file con contenuto
echo "Ciao mondo" > saluto.txt
# Crea file con testo dentro
# Aggiungi contenuto a file esistente
echo "Nuova riga" >> saluto.txt
# Aggiunge testo senza sovrascrivere
# Crea directory
mkdir nuova_cartella
# Crea una cartella
# Crea directory annidate
mkdir -p cartella/sottocartella/sottosotto
# Crea tutta la struttura anche se non esiste
# Crea più directory
mkdir cartella1 cartella2 cartella3
# Crea tre cartelle contemporaneamente
# Copia file
cp file_origine.txt file_destinazione.txt
# Copia e rinomina il file
# Copia file in altra directory
cp file.txt /Users/tuonome/Documents/
# Copia file nella cartella Documenti
# Copia directory intera
cp -r cartella_origine cartella_destinazione
# Copia ricorsivamente tutta la cartella
# Copia preservando attributi
cp -p file.txt backup_file.txt
# Mantiene permessi, timestamp, proprietario
# Copia interattiva (chiede conferma)
cp -i file.txt file_esistente.txt
# Chiede se sovrascrivere file esistente
# Copia verbose (mostra operazioni)
cp -v file.txt copia_file.txt
# Stampa cosa sta facendo
# Sposta/rinomina file
mv vecchio_nome.txt nuovo_nome.txt
# Rinomina il file
# Sposta file in altra directory
mv file.txt /Users/tuonome/Desktop/
# Sposta il file sul Desktop
# Sposta directory intera
mv vecchia_cartella nuova_cartella
# Sposta/rinomina la cartella
# Sposta più file contemporaneamente
mv file1.txt file2.txt file3.txt /Users/tuonome/Documents/
# Sposta tutti i file nella cartella Documenti
# Sposta con backup
mv -b file.txt file_esistente.txt
# Crea backup del file di destinazione se esiste
# Cancella file
rm file.txt
# Elimina il file
# Cancella più file
rm file1.txt file2.txt file3.txt
# Elimina tutti i file specificati
# Cancella con conferma
rm -i file.txt
# Chiede conferma prima di eliminare
# Cancella directory vuota
rmdir cartella_vuota
# Elimina cartella solo se vuota
# Cancella directory e contenuto
rm -r cartella
# Elimina ricorsivamente cartella e tutto il contenuto
# Cancella forzatamente
rm -rf cartella
# Elimina tutto senza chiedere conferma
# Cancella file con pattern
rm *.txt
# Elimina tutti i file .txt nella directory corrente
# Visualizza tutto il file
cat file.txt
# Stampa tutto il contenuto del file
# Visualizza con numerazione righe
cat -n file.txt
# Mostra contenuto con numeri di riga
# Visualizza file lunghi (paginato)
less file.txt
# Naviga con frecce, q per uscire
# Visualizza file lunghi alternativo
more file.txt
# Simile a less ma più basilare
# Prime righe del file
head file.txt
# Mostra prime 10 righe
# Prime N righe
head -n 20 file.txt
# Mostra prime 20 righe
# Ultime righe del file
tail file.txt
# Mostra ultime 10 righe
# Ultime N righe
tail -n 20 file.txt
# Mostra ultime 20 righe
# Segui file in tempo reale
tail -f log.txt
# Mostra nuove righe aggiunte al file (utile per log)
# Editor nano (semplice)
nano file.txt
# Apre editor semplice (Ctrl+X per uscire)
# Editor vim (avanzato)
vim file.txt
# Apre vim (ESC poi :q per uscire, :wq per salvare e uscire)
# Editor emacs
emacs file.txt
# Apre emacs (Ctrl+X Ctrl+C per uscire)
# Modifica veloce con sed
sed 's/vecchio/nuovo/g' file.txt > file_modificato.txt
# Sostituisce "vecchio" con "nuovo" in tutto il file
# Confronta due file
diff file1.txt file2.txt
# Mostra differenze tra i file
# Confronto dettagliato
diff -u file1.txt file2.txt
# Formato unified diff (usato da Git)
# Confronto ignorando maiuscole
diff -i file1.txt file2.txt
# Ignora differenze maiuscole/minuscole
# Confronto directory
diff -r cartella1 cartella2
# Confronta ricorsivamente due cartelle
# Trova file per nome
find . -name "*.txt"
# Trova tutti i file .txt nella directory corrente e sottocartelle
# Trova file ignorando maiuscole
find . -iname "*.TXT"
# Trova file .txt ignorando maiuscole/minuscole
# Trova solo file (non directory)
find . -type f -name "*.jpg"
# Trova solo file (non cartelle) con estensione .jpg
# Trova solo directory
find . -type d -name "test*"
# Trova solo cartelle che iniziano con "test"
# Trova file per dimensione
find . -size +100M
# Trova file più grandi di 100MB
# Trova file modificati di recente
find . -mtime -7
# Trova file modificati negli ultimi 7 giorni
# Trova ed esegui comando
find . -name "*.log" -exec rm {} \;
# Trova file .log e li elimina
# Ricerca rapida con locate
locate file.txt
# Ricerca veloce nel database dei file (aggiornato periodicamente)
# Cerca testo in file
grep "parola" file.txt
# Cerca "parola" nel file
# Cerca ignorando maiuscole
grep -i "PAROLA" file.txt
# Cerca ignorando maiuscole/minuscole
# Cerca in più file
grep "errore" *.log
# Cerca "errore" in tutti i file .log
# Cerca ricorsivamente
grep -r "TODO" .
# Cerca "TODO" in tutti i file della directory e sottocartelle
# Cerca con numerazione righe
grep -n "function" script.js
# Mostra numero riga dove trova "function"
# Cerca pattern con regex
grep -E "^[0-9]+$" numbers.txt
# Cerca righe che contengono solo numeri
# Cerca escludendo pattern
grep -v "debug" log.txt
# Mostra righe che NON contengono "debug"
# Conta occorrenze
grep -c "errore" log.txt
# Conta quante righe contengono "errore"
# Ordina righe
sort file.txt
# Ordina alfabeticamente le righe
# Ordina numericamente
sort -n numbers.txt
# Ordina numericamente
# Ordina al contrario
sort -r file.txt
# Ordina in ordine inverso
# Rimuovi righe duplicate
sort file.txt | uniq
# Prima ordina poi rimuove duplicati
# Conta righe duplicate
sort file.txt | uniq -c
# Conta quante volte compare ogni riga
# Estrai colonne specifiche
cut -d',' -f1,3 data.csv
# Estrae colonne 1 e 3 da file CSV
# Sostituisci caratteri
tr 'a-z' 'A-Z' < file.txt
# Converte tutto in maiuscolo
# Conta parole, righe, caratteri
wc file.txt
# Mostra numero righe, parole, caratteri
# Solo numero righe
wc -l file.txt
# Conta solo le righe
# Copia con progress bar
rsync -av --progress cartella_origine/ cartella_destinazione/
# Mostra progresso della copia
# Sincronizza directory
rsync -av --delete cartella_origine/ cartella_destinazione/
# Sincronizza eliminando file non presenti nell'origine
# Copia escludendo file
rsync -av --exclude="*.tmp" cartella_origine/ cartella_destinazione/
# Copia escludendo file temporanei
# Backup incrementale
rsync -av --backup --backup-dir=backup_$(date +%Y%m%d) cartella_origine/ cartella_destinazione/
# Crea backup dei file modificati
# Copia file su server remoto
scp file.txt user@server.com:/home/user/
# Copia file locale su server remoto
# Copia file da server remoto
scp user@server.com:/home/user/file.txt ./
# Scarica file da server remoto
# Copia directory ricorsivamente
scp -r cartella/ user@server.com:/home/user/
# Copia intera cartella su server remoto
# Copia con porta SSH custom
scp -P 2222 file.txt user@server.com:/home/user/
# Usa porta SSH diversa da 22
# Sincronizzazione remota con rsync
rsync -avz file.txt user@server.com:/home/user/
# Sincronizza con compressione
# Rsync con SSH su porta custom
rsync -avz -e "ssh -p 2222" cartella/ user@server.com:/home/user/cartella/
# Rsync via SSH su porta specifica
# Download file con curl
curl -O https://example.com/file.zip
# Scarica file mantenendo nome originale
# Download con nome custom
curl -o miofile.zip https://example.com/file.zip
# Scarica con nome personalizzato
# Download con progress bar
curl --progress-bar -O https://example.com/file.zip
# Mostra barra di progresso
# Download con wget
wget https://example.com/file.zip
# Scarica file (devi installare wget con brew)
# Download ricorsivo sito
wget -r -np -k https://example.com/docs/
# Scarica ricorsivamente una sezione del sito
# Mostra permessi dettagliati
ls -l file.txt
# Formato: -rwxrwxrwx proprietario gruppo dimensione data nome
# Mostra solo permessi
stat -f "%Sp" file.txt
# Mostra permessi in formato leggibile
# Info complete file
stat file.txt
# Mostra tutte le informazioni: permessi, proprietario, date, etc.
# Cambia permessi numerici
chmod 755 file.txt
# rwxr-xr-x: proprietario tutto, gruppo/altri lettura+esecuzione
# Cambia permessi simbolici
chmod u+x file.txt
# Aggiunge permesso esecuzione al proprietario
# Rimuovi permessi
chmod u-w file.txt
# Rimuove permesso scrittura al proprietario
# Permessi per gruppo
chmod g+rw file.txt
# Aggiunge lettura+scrittura al gruppo
# Permessi per tutti
chmod a+r file.txt
# Aggiunge lettura a tutti (all)
# Permessi ricorsivi
chmod -R 755 cartella/
# Applica permessi a cartella e tutto il contenuto
# Permessi solo per directory
find . -type d -exec chmod 755 {} \;
# Applica 755 solo alle directory
# Permessi solo per file
find . -type f -exec chmod 644 {} \;
# Applica 644 solo ai file
# Cambia proprietario
sudo chown nuovoproprietario file.txt
# Cambia proprietario del file
# Cambia proprietario e gruppo
sudo chown nuovoproprietario:nuovogruppo file.txt
# Cambia entrambi contemporaneamente
# Cambia solo gruppo
sudo chgrp nuovogruppo file.txt
# Cambia solo il gruppo
# Cambia ricorsivamente
sudo chown -R proprietario:gruppo cartella/
# Cambia proprietario/gruppo di cartella e contenuto
# Copia permessi da altro file
chmod --reference=file_riferimento.txt file_target.txt
# Copia i permessi esatti
# Lista tutti i processi
ps aux
# Mostra tutti i processi con dettagli
# Processi dell'utente corrente
ps -x
# Solo i tuoi processi
# Processi in tempo reale
top
# Monitor interattivo (q per uscire)
# Monitor migliorato
htop
# Versione migliorata di top (installa con brew install htop)
# Processi per nome
pgrep -f nome_processo
# Trova PID dei processi che contengono "nome_processo"
# Processi con comando completo
ps aux | grep nome_processo
# Cerca processi filtrando per nome
# Termina processo per PID
kill 1234
# Termina processo con ID 1234
# Termina forzatamente
kill -9 1234
# Kill forzato (SIGKILL)
# Termina per nome
killall nome_processo
# Termina tutti i processi con quel nome
# Termina processo utente
pkill -u nomeutente
# Termina tutti i processi dell'utente
# Sospendi processo
kill -STOP 1234
# Sospende il processo
# Riprendi processo sospeso
kill -CONT 1234
# Riprende processo sospeso
# Esegui comando in background
comando &
# Esegue il comando e ritorna subito al prompt
# Lista job in background
jobs
# Mostra processi in background della shell corrente
# Porta job in foreground
fg %1
# Porta il job numero 1 in primo piano
# Manda job in background
bg %1
# Manda il job numero 1 in background
# Disconnetti processo dalla shell
nohup comando &
# Il processo continua anche se chiudi il terminale
# Esegui comando con priorità bassa
nice -n 10 comando
# Esegue con priorità più bassa (CPU)
# Informazioni sistema
uname -a
# Kernel, architettura, versione sistema
# Utilizzo memoria (macOS)
vm_stat
# Statistiche memoria virtuale
# Utilizzo disco
df -h
# Mostra spazio disco di tutti i filesystem
# Utilizzo directory
du -sh *
# Mostra dimensioni di file/cartelle nella directory corrente
# Processi che usano più CPU
top -o cpu
# Ordina per utilizzo CPU
# Processi che usano più memoria
top -o mem
# Ordina per utilizzo memoria
# Uptime sistema
uptime
# Da quanto tempo è acceso il sistema
# Connetti a server remoto
ssh user@server.com
# Connessione SSH basilare
# SSH con porta specifica
ssh -p 2222 user@server.com
# Connessione su porta diversa da 22
# SSH con chiave privata
ssh -i ~/.ssh/id_rsa user@server.com
# Usa chiave specifica per autenticazione
# SSH con tunnel locale
ssh -L 8080:localhost:80 user@server.com
# Tunnel locale: porta 8080 locale -> porta 80 remota
# SSH con tunnel remoto
ssh -R 9090:localhost:8080 user@server.com
# Tunnel remoto: porta 9090 remota -> porta 8080 locale
# SSH con X11 forwarding
ssh -X user@server.com
# Permette di aprire applicazioni grafiche remote
# Genera nuova chiave SSH
ssh-keygen -t rsa -b 4096 -C "tua@email.com"
# Crea coppia chiave pubblica/privata RSA
# Genera chiave ED25519 (più sicura)
ssh-keygen -t ed25519 -C "tua@email.com"
# Formato più moderno e sicuro
# Copia chiave pubblica su server
ssh-copy-id user@server.com
# Installa la tua chiave pubblica sul server remoto
# Lista chiavi nell'agent SSH
ssh-add -l
# Mostra chiavi caricate in memoria
# Aggiungi chiave all'agent
ssh-add ~/.ssh/id_rsa
# Carica chiave privata nell'agent SSH
# Test ping
ping google.com
# Verifica connettività (Ctrl+C per fermare)
# Ping limitato
ping -c 4 google.com
# Solo 4 ping
# Traceroute
traceroute google.com
# Mostra percorso pacchetti verso destinazione
# Test porta specifica
nc -zv server.com 80
# Verifica se porta 80 è aperta su server.com
# Ascolta su porta
nc -l 8080
# Ascolta sulla porta 8080 locale
# Test DNS
nslookup google.com
# Risolve nome in IP
# DNS lookup avanzato
dig google.com
# Informazioni DNS dettagliate
# Connessioni attive
netstat -an
# Mostra tutte le connessioni di rete
# Connessioni in ascolto
netstat -ln
# Solo porte in ascolto
# Processi e porte
lsof -i :80
# Mostra quale processo usa la porta 80
# Tutte le connessioni di un processo
lsof -p 1234
# File aperti dal processo 1234 (incluse connessioni)
# Monitor traffico di rete
sudo tcpdump -i en0
# Cattura pacchetti su interfaccia en0
# Info interfacce di rete
ifconfig
# Mostra configurazione tutte le interfacce
# Statistiche traffico
netstat -i
# Statistiche pacchetti per interfaccia
# Crea archivio
tar -cf archivio.tar cartella/
# Crea archivio tar (senza compressione)
# Crea archivio compresso gzip
tar -czf archivio.tar.gz cartella/
# Crea archivio tar con compressione gzip
# Crea archivio compresso bzip2
tar -cjf archivio.tar.bz2 cartella/
# Compressione bzip2 (più efficiente)
# Estrai archivio
tar -xf archivio.tar
# Estrae archivio tar
# Estrai archivio compresso
tar -xzf archivio.tar.gz
# Estrae archivio gzip
# Lista contenuto archivio
tar -tf archivio.tar
# Mostra contenuto senza estrarre
# Estrai in directory specifica
tar -xzf archivio.tar.gz -C /destinazione/
# Estrae in cartella specifica
# Aggiungi file ad archivio esistente
tar -rf archivio.tar nuovo_file.txt
# Aggiunge file all'archivio
# Comprimi con gzip
gzip file.txt
# Crea file.txt.gz e rimuove originale
# Decomprimi gzip
gunzip file.txt.gz
# Estrae e rimuove .gz
# Comprimi mantenendo originale
gzip -k file.txt
# Mantiene file originale
# Comprimi con bzip2
bzip2 file.txt
# Compressione migliore di gzip
# Decomprimi bzip2
bunzip2 file.txt.bz2
# Estrae file bzip2
# Crea ZIP
zip -r archivio.zip cartella/
# Crea archivio ZIP ricorsivo
# Estrai ZIP
unzip archivio.zip
# Estrae tutto l'archivio
# Estrai in cartella specifica
unzip archivio.zip -d /destinazione/
# Estrae in cartella specifica
# Lista contenuto ZIP
unzip -l archivio.zip
# Mostra contenuto senza estrarre
# Estrai file specifico
unzip archivio.zip file_specifico.txt
# Estrae solo un file
# Crea ZIP con password
zip -r -e archivio_sicuro.zip cartella/
# Chiede password per proteggere archivio
# Mostra tutte le variabili
env
# Lista tutte le variabili d'ambiente
# Mostra variabile specifica
echo $HOME
# Mostra valore della variabile HOME
# Imposta variabile temporanea
export MYVARIABLE="valore"
# Variabile disponibile solo nella sessione corrente
# Variabile per un comando singolo
LANG=it_IT.UTF-8 comando
# Imposta variabile solo per quel comando
# Rimuovi variabile
unset MYVARIABLE
# Elimina la variabile d'ambiente
# PATH - percorsi eseguibili
echo $PATH
# Mostra dove la shell cerca i comandi
# Aggiungi directory al PATH temporaneamente
export PATH="$PATH:/nuovo/percorso"
# Aggiunge nuovo percorso al PATH
# File di configurazione zsh
nano ~/.zshrc
# Configurazione permanente per zsh
# File di configurazione bash
nano ~/.bash_profile
# Configurazione permanente per bash
# Ricarica configurazione
source ~/.zshrc
# Applica modifiche senza riavviare terminale
# Alias permanenti
echo 'alias ll="ls -la"' >> ~/.zshrc
# Aggiunge alias al file di configurazione
# Funzione personalizzata
myfunc() {
echo "Hai passato: $1"
}
# Definisce funzione nella shell
# Mostra cronologia
history
# Lista tutti i comandi eseguiti
# Cerca nella cronologia
history | grep "git"
# Trova comandi che contengono "git"
# Esegui comando dalla cronologia
!123
# Esegue comando numero 123 dalla cronologia
# Esegui ultimo comando che inizia con...
!ssh
# Esegue ultimo comando che iniziava con "ssh"
# Ripeti ultimo comando
!!
# Ripete l'ultimo comando eseguito
# Cancella cronologia
history -c
# Svuota la cronologia della sessione corrente
#!/bin/bash
# Crea file script.sh
# Variabili
NOME="Mario"
DATA=$(date)
# Output
echo "Ciao $NOME, oggi è $DATA"
# Controllo condizionale
if [ -f "file.txt" ]; then
echo "Il file esiste"
else
echo "Il file non esiste"
fi
# Loop
for i in {1..5}; do
echo "Numero: $i"
done
# Rendi script eseguibile
chmod +x script.sh
# Permette esecuzione dello script
# Esegui script
./script.sh
# Esegue lo script
# Apri editor crontab
crontab -e
# Modifica i job programmati
# Lista cron jobs
crontab -l
# Mostra tutti i job programmati
# Rimuovi tutti i cron jobs
crontab -r
# Cancella tutti i job programmati
# Esegui in sequenza
comando1 && comando2
# comando2 eseguito solo se comando1 ha successo
# Esegui alternativo
comando1 || comando2
# comando2 eseguito solo se comando1 fallisce
# Esegui sempre entrambi
comando1; comando2
# Esegue comando2 indipendentemente da comando1
# Pipe (collega output a input)
cat file.txt | grep "errore" | wc -l
# Conta righe che contengono "errore"
# Redirezione output
comando > output.txt
# Salva output in file (sovrascrive)
# Redirezione append
comando >> output.txt
# Aggiunge output al file
# Redirezione errori
comando 2> errori.txt
# Salva errori in file separato
# Redirezione tutto
comando > output.txt 2>&1
# Salva output e errori nello stesso file
# Utilizzo CPU e memoria live
top -o cpu
# Monitor interattivo ordinato per CPU
# Monitor migliorato (installare con brew)
htop
# Interfaccia più user-friendly
# Statistiche sistema
iostat 1
# Statistiche I/O ogni secondo
# Monitor rete
nettop
# Monitor traffico di rete per processo
# Utilizzo disco per directory
du -sh */ | sort -hr
# Mostra dimensioni cartelle ordinate per grandezza
# File aperti da processo
lsof -p PID
# Mostra tutti i file aperti dal processo
# Processi che accedono a file
lsof /path/to/file
# Mostra quali processi stanno usando il file
# Log sistema unified (macOS)
log show --last 1h
# Mostra log dell'ultima ora
# Log in tempo reale
log stream
# Stream dei log in tempo reale
# Filtra log per processo
log show --predicate 'process == "Safari"'
# Solo log di Safari
# Log con livello di errore
log show --level error
# Solo errori
# Console log classici
tail -f /var/log/system.log
# Segue log di sistema (se disponibile)
# Analisi performance processo
time comando
# Misura tempo di esecuzione comando
# Profiling dettagliato
sudo dtrace -n 'syscall:::entry { @[execname] = count(); }'
# Trace system call per processo
# Activity Monitor da CLI
ps aux --sort=-%cpu | head -10
# Top 10 processi per CPU
# Memory pressure
sudo memory_pressure -l warn
# Simula pressione memoria per test
# Aggiungi al ~/.zshrc per renderli permanenti
alias ll='ls -la' # Lista dettagliata
alias la='ls -A' # Lista con file nascosti
alias l='ls -CF' # Lista compatta
alias ..='cd ..' # Su di un livello
alias ...='cd ../..' # Su di due livelli
alias grep='grep --color=auto' # Grep colorato
alias h='history' # Cronologia breve
alias j='jobs -l' # Lista job
alias path='echo -e ${PATH//:/\\n}' # Mostra PATH leggibile
alias now='date +"%T"' # Ora corrente
alias nowdate='date +"%d-%m-%Y"' # Data corrente
alias vi=vim # Usa vim invece di vi
alias edit='vim' # Alias editor
alias ports='netstat -tulanp' # Porte aperte
# Aggiungi al ~/.zshrc
# Crea directory e entra
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Estrai qualunque archivio
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Non so come estrarre '$1'" ;;
esac
else
echo "'$1' non è un file valido"
fi
}
# Backup rapido file
backup() {
cp "$1"{,.backup-$(date +%Y%m%d-%H%M%S)}
}
# Trova file grandi
findlarge() {
find . -type f -size +${1:-100M} -ls
}
# Usa !! per riferirsi all'ultimo comando
sudo !!
# Esegue l'ultimo comando con sudo
# Usa !$ per l'ultimo argomento del comando precedente
mkdir /very/long/path
cd !$
# Va nella directory appena creata
# Usa ^old^new per correzione rapida
# Se hai scritto: cat fiel.txt
^fiel^file
# Corregge in: cat file.txt
# Sostituisci testo in comando precedente
!!:s/old/new/
# Sostituisce prima occorrenza di 'old' con 'new'
# Esegui comando dalla cronologia per numero
!123
# Esegue comando numero 123
# Esegui ultimo comando che inizia con 'git'
!git
# Argomenti comando precedente
echo primo secondo terzo
echo !:1 # Stampa 'primo'
echo !:2 # Stampa 'secondo'
echo !:$ # Stampa 'terzo' (ultimo)
echo !:1-2 # Stampa 'primo secondo'
echo !:* # Stampa tutti gli argomenti
# Spazio occupato per directory
du -sh */ | sort -hr
# File più grandi in directory corrente
ls -lS | head
# Processi che usano più memoria
ps aux --sort=-%mem | head
# Connessioni di rete attive
netstat -tuln | grep LISTEN
# Backup directory con timestamp
tar -czf backup_$(date +%Y%m%d).tar.gz directory/
# Monitor log in tempo reale con filtro
tail -f /var/log/system.log | grep ERROR
# Lista file modificati oggi
find . -maxdepth 1 -mtime 0 -type f
# Conta righe codice in progetto
find . -name "*.js" -exec cat {} \; | wc -l