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