私は現在のディレクトリの下にあるすべてのディレクトリとファイルを一覧表示し、それらがファイルまたはディレクトリである場合は、次のコマンドで書き込もうとしました:
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
"{}"
。なぜecho
二度使うの?
echo "{}" : ;if [ -f "{}" ]; then echo file; else echo directory;fi
\;
find -exec bash -c 'echo -n "{} : ";if [ -f "{}" ]; then echo file; else echo directory;fi' \;