basename
は、指定されたファイル名からディレクトリと末尾のサフィックスを削除するコマンドラインユーティリティです。
basename
の使用 コマンド#
basename
コマンドは2つの構文形式をサポートします:
basename NAME [SUFFIX]
basename OPTION... NAME...
basename
ファイル名を取得し、ファイル名の最後のコンポーネントを出力します。オプションで、末尾のサフィックスを削除することもできます。これは、いくつかのオプションのみを受け入れる単純なコマンドです。
最も基本的な例は、先頭のディレクトリを削除してファイル名を印刷することです。
basename /etc/passwd
出力にはファイル名が含まれます:
passwd
basename
コマンドは、末尾の /
を削除します 文字:
basename /usr/local/
basename /usr/local
どちらのコマンドも同じ出力を生成します:
local
local
デフォルトでは、各出力行は改行文字で終わります。 NUL
で行を終了するには 、 -z
を使用します (-ゼロコード> )オプション。
複数の入力#
basename
コマンドは、引数として複数の名前を受け入れることができます。これを行うには、 -a
を使用してコマンドを呼び出します。 (-複数
)オプションの後に、スペースで区切られたファイルのリストが続きます。
たとえば、 / etc / passwd
のファイル名を取得するには および/etc / shadow
実行します:
basename -a /etc/passwd /etc/shadow
passwd
shadow
末尾のサフィックスの削除#
ファイル名から末尾のサフィックスを削除するには、サフィックスを2番目の引数として渡します。
basename /etc/hostname name
host
通常、この機能はファイル拡張子を取り除くために使用されます:
basename /etc/sysctl.conf .conf
sysctl
末尾のサフィックスを削除する別の方法は、 -s
でサフィックスを指定することです。 (-suffix =SUFFIX
)オプション:
basename -s .conf /etc/sysctl.conf
sysctl
この構文形式を使用すると、複数の名前から末尾のサフィックスを削除できます。
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo
次の例は、 basename
の使用方法を示しています bash内のコマンドfor
looptoは、ファイル拡張子を「.jpeg」から「.jpg」に置き換えることにより、現在のディレクトリで「.jpeg」で終わるすべてのファイルの名前を変更します。
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
basename
を呼び出す代わりに、シェルとしてbashを使用している場合 、シェルパラメータ拡張を使用して末尾の拡張を削除することができます。
結論#
basename
コマンドは、名前から先頭のディレクトリと末尾のサフィックスを削除します。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。