Linuxで文字列の一部を取得する方法

Linuxで文字列の一部を取得する方法

find コマンドの出力は次のようになります。

/home/user/test/folder1/abc.png

今私は得たい

フォルダ1

上記の文字列から

答え1

ルートの左側の固定位置または右側の固定深さに基づいてルートの対応する部分をお探しですか?左側から見ると、次のようにフィールド区切り文字として "/"を使用し、4番目のフィールドをキャッチしてcutを使用して簡単にこれを実行できます。

find ... | cut -d/ -f4

答え2

path=/home/user/test/folder1/abc.def
folder=$(basename $(dirname $path))

または、 find 出力を処理する場合(たとえば、複数のパス、1 行に 1 つ)

find ... | awk -F/ '{print $(NF-1)}'
find ... | sed 's#.*/\([^/]*\)/[^/]*$#\1#'

答え3

私はawkを使用します。

それは次のとおりです。

find /home -name "abc.png" | awk -F"/" '{print $5}'

答え4

私の試みは次のとおりです。

find . -name abc.png -exec dirname {} \; |grep -o '[^/]*$'

関連情報