Come utilizzare il comando fd su Linux
Pubblicato: 2022-01-29 Su Linux, fd
è un'alternativa più semplice al comando find
. Ha una sintassi semplificata, utilizza impostazioni predefinite ragionevoli e ha un comportamento di buon senso integrato. Diamoci un'occhiata.
fd contro trova: qual è la differenza?
Il comando fd
non intende sostituire il tradizionale comando find
, che è stato su Linux, beh, da sempre. Invece, fd
cerca di soddisfare la maggior parte degli usi comuni di find
in un modo più diretto e spesso è otto o nove volte più veloce di find
. Puoi vedere alcuni dei suoi benchmark nella pagina del repository GitHub del progetto.
fd
ha un output colorato, simile a quello di alcune modalità ls
. È ricorsivo, ma per impostazione predefinita non cerca nelle directory nascoste. Conosce Git e ignorerà automaticamente qualsiasi pattern nel tuo file ".gitignore".
fd
non fa distinzione tra maiuscole e minuscole per impostazione predefinita. Tuttavia, se il modello di ricerca contiene una lettera maiuscola, fd
opera in una modalità con distinzione tra maiuscole e minuscole. Ovviamente puoi ignorare le impostazioni predefinite, ma, in molti casi, funzionano a tuo favore.
CORRELATI: Come utilizzare tutti i comandi di ricerca di Linux
Installazione di fd
Da Ubuntu 19.04 (Disco Dingo) puoi installare fd
direttamente chiamando il pacchetto ufficialmente mantenuto con apt-get
. Se stai utilizzando una versione precedente di Ubuntu, controlla le istruzioni di installazione nella pagina dell'hub Git.
Digita quanto segue:
sudo apt-get install fd-find
In Ubuntu, il comando è fdfind
per evitare uno scontro di nomi con un'altra utility esistente. Se vuoi che sia fd
, puoi impostare un alias:
alias fd=fdtrova
Per rendere persistente l'alias in modo che rimanga disponibile dopo il riavvio, inserirlo nel file ".bashrc" o ".bash_aliases".
CORRELATI: Come creare alias e funzioni di shell su Linux
Per installare fd
su Fedora, digita questo comando:
sudo dfn install fd-find
Su Manjaro, digita quanto segue:
sudo pacman -Syu fd
fd contro fdfind
Per evitare confusione, abbiamo lasciato il comando con il suo nome predefinito, fdfind
, sul nostro PC di prova Ubuntu. fd
e fdfind
sono esattamente lo stesso comando, come vedrai nel seguente esempio (se chiedi a fdfind
di mostrare la sua versione, si chiama "fd"):
fdfind --versione
Chiameremo il comando "fed", ma negli esempi useremo Ubuntu "fdfind". Su altre distribuzioni Linux, puoi digitare "fd" invece di "fdfind" per salvare alcune sequenze di tasti.
Ricerche semplici con fd
Se usi fd
senza opzioni della riga di comando, si comporta un po' come ls
, tranne per il fatto che per impostazione predefinita elenca i file nelle sottodirectory.
Digita quanto segue:
trova
L'output viene visualizzato in diversi colori per diversi tipi di file e directory.
Per visualizzare i file di un tipo specifico, utilizzare l'opzione
(estensione). Tieni presente che non è necessario far precedere l'estensione con un punto (.), né fa distinzione tra maiuscole e minuscole.-e
Ad esempio, puoi digitare quanto segue:
fdfind -e png
Ora, gli unici file elencati sono file di immagine PNG.
Per cercare un singolo file, digita il suo nome sulla riga di comando, in questo modo:
fdfind index.page
Il file viene trovato e si trova in una sottodirectory. Non dovevamo dire a fd
di cercare ricorsivamente.
Per fare in modo che la ricerca inizi in una directory particolare, includi un percorso di file sulla riga di comando. Il comando seguente avvierà una ricerca nella directory "/etc" e cercherà i file che includono "passwd" nel nome del file:
fdfind passwd /ecc
Qui, stiamo cercando tutti i file di codice sorgente C che contengono "coord" nel nome del file:
fdfind -ec coordina
Sono stati trovati due file corrispondenti.
fd e Git
Git è un sistema di controllo della versione del codice sorgente estremamente popolare. Se usi Git sul tuo computer, probabilmente usi i file ".gitignore" per dire a Git di quali file dovrebbe occuparsi e quali può ignorare. Per impostazione predefinita, fd
rispetta le impostazioni nei tuoi file ".gitignore".
In questa directory, abbiamo un repository Git e un file ".gitignore". Digitiamo quanto segue:
ls -adl .git*
Chiediamo a fd
di elencare tutti i file che contengono "coord" nel nome del file. Quindi ripeteremo la ricerca e utilizzeremo l'opzione -I
(no ignore). Questo dice a fd
di ignorare le impostazioni nel file ".gitignore" e di segnalare ogni file corrispondente.
Per fare tutto ciò, digitiamo quanto segue:
trova la coordinata
trova coordinata -I
I due file extra nel secondo set di risultati sono file oggetto. Questi vengono creati quando viene compilato un programma di file. Vengono quindi utilizzati dal linker per creare la versione eseguibile finale del programma.
I file oggetto vengono in genere ignorati dai programmi di controllo della versione del codice sorgente. Vengono rigenerati ogni volta che compili il tuo programma, quindi non devi archiviarne copie. C'è una voce nel file ".gitignore" che indica a Git di ignorare i file oggetto e, per impostazione predefinita, anche fd
li ignora.
L'opzione -I
(no ignore) obbliga fd
a restituire tutto ciò che trova, invece di essere guidato dal file ".gitginore".
Tipi di file e distinzione tra maiuscole e minuscole
Puoi chiedere a fd
di cercare directory, file (inclusi quelli eseguibili e vuoti) e collegamenti simbolici. Puoi farlo usando l'opzione -t
(tipo), seguita da una delle lettere seguenti:
- f : file.
- d : Directory.
- l : Collegamento simbolico.
- x : file eseguibile.
- e : file vuoto.
Quanto segue cerca una directory chiamata immagini:
fdfind -td immagini
Viene trovata una corrispondenza, una sottodirectory inferiore a quella corrente.
Vediamo come funziona la distinzione tra maiuscole e minuscole con i modelli di ricerca. Digitiamo quanto segue per cercare prima i file che contengono "geo" nei nomi dei file, quindi quelli che contengono "Geo" nei nomi dei file:
fdfind -tf geo
fdfind -tf Geo
Nel primo comando, abbiamo utilizzato un modello di ricerca minuscolo, che ha fatto sì che fd
operasse senza distinzione tra maiuscole e minuscole. Ciò significa che sia "Geo" che "geo" sono corrispondenze valide.
Il nostro secondo comando conteneva un carattere maiuscolo, che faceva sì che fd
operasse in modo sensibile alle maiuscole. Ciò significa che solo "Geo" è una corrispondenza valida.
Esecuzione del comando
Il comando fd
consente di lanciare un altro comando ed eseguirlo su ciascuno dei file trovati.
Diciamo che sappiamo che c'è un file Zip da qualche parte nel nostro albero di directory del codice sorgente. Possiamo cercarlo usando il seguente comando, che cerca i file con estensione ZIP:
fdfinf -e zip
Con l'opzione -x
(exec), puoi passare ogni file trovato a un altro comando per essere elaborato da esso. Ad esempio, possiamo digitare quanto segue per chiamare l'utilità di decompressione per decomprimere il nostro file ZIP (il "{}" è un segnaposto che rappresenta il file trovato):
fdfind -e zip -x decomprimi {}
Questo decomprimerà il file nella directory di lavoro corrente. Se vogliamo che venga decompresso nella directory contenente il file ZIP, possiamo utilizzare uno dei seguenti segnaposto:
- {} : il percorso completo del file e il nome del file trovato.
- {/} : il nome del file trovato.
- {//} : la directory contenente il file trovato.
- {/.} : il nome del file trovato, senza estensione.
Affinché il nostro file ZIP possa essere trovato e decompresso nella directory che lo contiene, possiamo utilizzare l'opzione unzip -d
(directory) e passare il segnaposto della directory principale ( {//}
):
fdfind -e zip -x unzip {} -d {//}
Il file ZIP viene quindi individuato e decompresso nella sua directory principale.
La tua ricerca di riferimento?
Poiché copre gli usi più comuni con tale semplicità, fd
può facilmente diventare il tuo comando "trova". Ogni volta che hai bisogno delle sue funzionalità più avanzate, puoi sempre tornare a quel veterano esperto, find
.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
CORRELATI: I migliori laptop Linux per sviluppatori e appassionati