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 コマンドは、名前から先頭のディレクトリと末尾のサフィックスを削除します。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。