正規表現シェルは意味を見つけるのに役立ちます。

正規表現シェルは意味を見つけるのに役立ちます。

私はbashで始まり、次の表現行があります。これが何を意味するのかわかりません。

シェル正規表現では、この行はどういう意味ですか?

find . -name '*.sh' | sed 's#.*/##' | sed 's#\.sh##'

答え1

このfindステートメントは、現在のディレクトリとそのサブディレクトリで次に終わるすべてのファイルを検索し、1行.shに1つのファイルを印刷します。

演算子は一致する部分文字列を別のものに置き換えsます。sed構文はs<delimiter>regex<delimiter>replacement<delimiter>通常、次/のように使用されます。区切り記号しかし、#ここでは使用されます。

これ代替両方のステートメントに空のsed文字列があります。

/したがって、最初のステートメントはファイル名(つまりサブディレクトリ)から最後のステートメントの前の内容をすべて切り捨てます。 2番目のステートメントは.shファイル名のサフィックスを切り捨てます。

ファイルa/subdir/hierarchy/my_script.shはとして印刷されますmy_script

関連情報