サブフォルダー内のテキストファイルをリンクしようとしています。
cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1}/book.txt > out$var
しかし、これは何も返しません。したがって、存在しない「subfolder2」を追加してみてください。
cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1,subfolder2}/book.txt > out$var
今回はうまくいき、ファイルが正常にリンクされました。なぜこれが起こるのですか?
答え1
定義に応じて、GNU Bashの中括弧拡張にはシーケンス式またはカンマ区切り値のリストが必要です。
中括弧を拡張するパターンは、オプションの序文、その後に一連のカンマ区切り文字列、または一対の中括弧の間のシーケンス式、その後にオプションのPostScriptの形式を取ります。
あなたはできますドキュメントを読むもっと学ぶ。
いくつかの簡単な例:
echo {subfolder1}
{subfolder1}
echo {subfolder1,subfolder2}
subfolder1 subfolder2
echo subfolder{1}
subfolder{1}
echo subfolder{1..2}
subfolder1 subfolder2
答え2
{subfolder1}
{subfolder1}
他の選択肢がないためと評価されます。代わりに使用してくださいsubfolder1
。
答え3
中括弧は、{abc、def}などのカンマ区切り文字列、または{a..e}などの範囲がその間に指定されている場合にのみ拡張されます。
あなたの場合はこれを行う必要がないので、中かっこで囲むことなくsubfolder1を書くことができます。
cat ./{mainfolder1,mainfolder2,mainfolder3}/subfolder1/book.txt > out$var