2

返されたファイル名に空白が含まれているコマンド置換内でfindを使用したいと思います。ファイル名を正しく引用するために必要なオプションは何ですか?試し-print0ましたが、シェル自体では動作しません。

例:

command $(find . -type f) some other params

私も試してみまし-exec echo "{}" \;たが、それも役に立ちませんでした。


set -xシェル拡張と実行された実際のコマンドを表示するために使用すると、次のようになります。

$ command `find -type f -printf \"%p\"\ ` some other params
++ find -type f -printf '"%p" '
+ command '"./file_with' 'blanks"' '"./another' 'file"' some other params

一重引用符はどこから来ており、なぜ各「単語」に適用されるのですか?

4

3 に答える 3

3

検索結果を配列に入れて、を実行しますcommand "${array[@]}" some other params

于 2012-02-09T15:58:57.577 に答える
0

たぶん、printfアクションは置換に含まれるのにより適しています(findただし、GNUのみ):

command $(find . -type f -printf \"%P\"\ ) some other params

%Pプレースホルダーはファイル名からの引数を引いたものでfindあるため、以外の場合は、代わりに使用find .することをお勧め%pします。

于 2012-02-09T16:00:29.693 に答える
-2
find /what/ever -name "what ever" -exec echo "\{\}" \;

ここで動作します(Ubuntu 10.04のデフォルトのgtermとbash)

試してみました

find /bin -name ls -exec \{\} -lah \;
`find /bin -name ls -exec echo \{\} \;` -lah
MYCMD=`find /bin -name ls -exec echo \{\} \;` && $MYCMD -lah
MYCMD=$(`find /bin -name ls -exec echo \{\} \;` -lah)  && echo $MYCMD
MYCMD=$(`find /bin -name ls` -lah)  && echo $MYCMD

すべて期待どおりに機能します

于 2012-02-09T15:37:00.183 に答える