質問がありますファイル名に改行を含むファイルを見つける方法は?、許可された回答は改行を使用してANSI-C引用符でファイルを分割することを処理し、ksh
内部と外部でうまく機能しますbash
が、POSIXシェルはこれをどのように処理しますか?具体的にdash
。
答え1
コメントで議論し、私が引用した関連質問を見た後、改行を使用する1つの方法は、次のように-name
リテラル改行を使用することです。
$ find -type f -name '*
> *'
もう一つは、コマンドの置き換えによるものです。
$ find -name "$(printf '*\n*' )"
./with?newline
$ ls
another execve with?newline
しかし注目すべき点はPOSIXの定義, コマンド置換は、「... 一端から削除される 1 つ以上の文字シーケンス」を使用してシェルで実行されます。それは次のとおりです。
find -type f -name '*'"$(printf '\n')"'*'
思うように失敗し、**
パラメータリストを代わりに渡します。*[newline]*
コマンド置換の後続改行は、以下のようにさまざまな方法で処理できます。シェル: コマンド置換で末尾の改行 ('\n') を保持します。。