パスから文字列を抽出する

パスから文字列を抽出する

問題の説明:1行コマンドで指定されたパス名から不明な文字列(最後の文字列)を抽出したいと思います。

限界:

  1. パスは動的であり、ユーザー入力によって変更されることがあります。
  2. 1行のコマンドで最後の文字列を抽出します。

サンプル:

例1:

/home/xyz/Desktop/tools

この場合、単語を抽出するだけですtools

例2:

/tmp/my_directory/my_big_dir/my_small/dir/cross

今回も最後の文字列を抽出する必要があります。cross

これを行う方法はありますか?

私はコマンドを試しましたが、cutパスの長さが動的であるため動作しません。

答え1

basename私はこれがあなたが探しているコマンドだと思います。

[me@host ~]# basename /home/xyz/Desktop/tools
tools

答え2

他のプログラムを呼び出さなくても、bashや他のシェルでこれを行うことができますが、これははるかに高速です。

$ x=/home/xyz/Desktop/tools
$ echo ${x##*/}
tools
$ y=/tmp/my_directory/my_big_dir/my_small/dir/cross
$ echo ${y##*/}
cross

これを削除すると、##一致する最も長いプレフィックスが見つかります。*/

答え3

basename /your/full/path

必要な出力を提供します: path

関連情報