basename
è un'utilità della riga di comando che rimuove la directory e il suffisso finale dai nomi di file dati.
Utilizzo del basename
Comando #
Il basename
comando supporta due formati di sintassi:
basename NAME [SUFFIX]
basename OPTION... NAME...
basename
prende un nome file e stampa l'ultimo componente del nome file. Facoltativamente, può anche rimuovere qualsiasi suffisso finale. È un semplice comando che accetta solo poche opzioni.
L'esempio più semplice è stampare il nome del file con le directory principali rimosse:
basename /etc/passwd
L'output includerà il nome del file:
passwd
Il basename
il comando rimuove qualsiasi /
finale caratteri:
basename /usr/local/
basename /usr/local
Entrambi i comandi produrranno lo stesso output:
local
local
Per impostazione predefinita, ogni riga di output termina con un carattere di nuova riga. Per terminare le righe con NUL
, usa -z
(--zero
) opzione.
Ingressi multipli #
Il basename
comando può accettare più nomi come argomenti. Per farlo, invoca il comando con -a
(--multiple
), seguito dall'elenco dei file separati da uno spazio.
Ad esempio, per ottenere i nomi dei file di /etc/passwd
e /etc/shadow
correresti:
basename -a /etc/passwd /etc/shadow
passwd
shadow
Rimozione di un suffisso finale #
Per rimuovere qualsiasi suffisso finale dal nome del file, passa il suffisso come secondo argomento:
basename /etc/hostname name
host
In genere, questa funzione viene utilizzata per rimuovere le estensioni dei file:
basename /etc/sysctl.conf .conf
sysctl
Un altro modo per rimuovere un suffisso finale è specificare il suffisso con -s
(--suffix=SUFFIX
) opzione:
basename -s .conf /etc/sysctl.conf
sysctl
Questo modulo di sintassi ti consente di rimuovere qualsiasi suffisso finale da più nomi:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo
Esempio #
L'esempio seguente mostra come utilizzare il basename
comando all'interno di un bash for
loopper rinominare tutti i file che terminano con ".jpeg" nella directory corrente sostituendo l'estensione del file da ".jpeg" a ".jpg":
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
Se stai usando bash come shell, invece di invocare basename
, puoi utilizzare la rimozione dell'estensione finale utilizzando l'espansione dei parametri della shell.
Conclusione #
Il basename
il comando rimuove qualsiasi directory iniziale e suffisso finale dal nome.
Se hai domande o feedback, sentiti libero di lasciare un commento.