変数の前の部分文字列を削除できることを知っています。
X=foobarbaz
echo ${X#foo} # barbaz
...そして変数の後ろから:
echo ${X%baz} # foobar
この2つをどのように組み合わせますか?私は試した:
echo ${{X#foo}%baz} # "bad substitution"
echo ${${X#foo}%baz} # "bad substitution"
echo ${X#foo%baz} # foobarbaz
私はいません。考える次のように中間変数を使用できますfind -exec
。
find ./Source -name '*.src' \
-exec bash -c 'myconvert -i "{}" -o "./Dest/${0#./Source/%.src}.dst"' {} \;
ベストアンサー1
私はこれが可能だとは思わない(しかし間違っていることが証明されることを願っています)。ただし、中間変数を使用できます。他のインスタンスと同様に、ランナーは単にbashインスタンスbash -c
です。-exec
$ find . -type f
./foobarbaz
$ find . -type f -exec bash -c 'v=${0#./foo}; echo ${v%baz}' {} \;
bar
したがって、これがなぜ機能しないのかわかりません(あなたが正しくやろうとしていることを理解している場合)。
find ./Source -name '*.src' \
-exec bash -c 'v=${0%.src}; \
myconvert -i "{}" -o "./Dest/${v#./Source/}.dst"' {} \;