Solo estaba tratando de enumerar todos los directorios y archivos en el directorio actual y también escribir si son archivos o directorios con el siguiente comando:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
Sé que es un comando tonto, puedo usar otras cosas como -type f
o -type d
, pero quiero saber por qué ese código no funcionó como esperaba. Simplemente imprime el directorio a todos ellos. Por ejemplo, mientras que la salida de find
es:
.
./dir
./dir/file
La salida de mi código es:
. : directory
./dir : directory
./dir/file : directory
Y salida de
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
es
dir/file : file
Estoy trabajando Ubuntu 14.10
y usandofind (GNU findutils) 4.4.2
"{}"
. ¿Por qué usas echo
dos veces?
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' \;