web-dev-qa-db-ja.com

find -execのifコマンド

私は現在のディレクトリの下にあるすべてのディレクトリとファイルを一覧表示し、それらがファイルまたはディレクトリであるかどうかを次のコマンドで書き込もうとしました:

_find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
_

私はそれがばかげたコマンドであることを知っています、_-type f_や_-type d_などの他のものを使用できますが、そのコードが期待どおりに機能しなかった理由を知りたいです。それらすべてにディレクトリを出力するだけです。たとえば、findの出力は次のとおりです。

_.
./dir
./dir/file
_

私のコードの出力は:

_. : directory
./dir : directory
./dir/file : directory
_

そしての出力

_echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
_

です

_dir/file : file
_

私は_Ubuntu 14.10_に取り組んでおり、find (GNU findutils) 4.4.2を使用しています

8
Esref

findとともにif; then; else; fiを実行する別の方法は次のとおりです。

find |
while read p; do if [ -f "$p" ]; then echo file; else echo directory; fi; done
2
ncomputers