私は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
。