2017-10-10 4 views
0

空白を含むすべてのファイル名をパイプに渡す方法、または少なくとも空白を含むファイルを渡す方法はありますか?そのために私が試みた:見ての通りfind -print0 -name "* *"(空白)

~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -name "* *" | wc -c 
     0 
~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -print0 -name "* *" | wc -c 
    247 
~/Desktop> 

、-print0せずにコマンドを正確に現在のディレクトリに空白を含むどのファイルが見つかりません。しかし、-print0を追加すると、-nameオプションは明らかに私が期待するように解釈されません。

-name "* *" 

より

さらに良いことには空白だけでなく、スペースを指定するためのいくつかの方法だろう。理想的には、これはperl正規表現を使った "下流"処理に頼るのではなく、findで行うことができます。 最終的には、私が指定した文字で空白を置き換えるスクリプトにファイル名をパイプしたいと思っています。

答えて

1

ご注文事項。 -printアクションが-nameフィルタの前に来るので、これはすべての単一の名前が印刷されます。アクションは、フィルタの後に来るので

find . -print -name "foo" 

これは、fooという名前のみを出力します:

find . -name "foo" -print 
+0

をする方法はあります"touch foo $ '\ r' bar" –

+0

'-name '* [[:space:]] *''によって作成されたファイルなど、タブや戻り値などの「病的な」空白を含むファイル名を指定すると、 –