Eu só estava tentando listar todos os diretórios e arquivos no diretório atual e também escrever se eles forem arquivo ou diretório com o seguinte comando:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
Eu sei que é um comando bobo, posso usar outras coisas como -type f
or -type d
, mas quero saber por que esse pedaço de código não funcionou como eu esperava. Ele apenas imprime o diretório para todos eles. Por exemplo, enquanto a saída de find
é:
.
./dir
./dir/file
a saída do meu código é:
. : directory
./dir : directory
./dir/file : directory
E saída de
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
é
dir/file : file
Estou trabalhando Ubuntu 14.10
e usandofind (GNU findutils) 4.4.2
"{}"
. Por que você usa echo
duas vezes?
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' \;