Stavo solo cercando di elencare tutte le directory e i file nella directory corrente e anche di scrivere se sono file o directory con il seguente comando:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
So che è un comando sciocco, posso usare altre cose come -type f
o -type d
, ma voglio imparare perché quel pezzo di codice non ha funzionato come mi aspettavo. Stampa la directory su tutti. Ad esempio, mentre l'output di find
è:
.
./dir
./dir/file
l'output del mio codice è:
. : directory
./dir : directory
./dir/file : directory
E uscita di
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
è
dir/file : file
Sto lavorando Ubuntu 14.10
e usandofind (GNU findutils) 4.4.2
"{}"
. Perché usi echo
due volte?
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' \;