Я просто пытался перечислить все каталоги и файлы в текущем каталоге, а также написать, если это файл или каталог, с помощью следующей команды:
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' \;