J'essayais simplement de répertorier tous les répertoires et fichiers sous le répertoire actuel et d'écrire également s'ils sont des fichiers ou des répertoires avec la commande suivante:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
Je sais que c'est une commande stupide, je peux utiliser d'autres choses comme -type f
ou -type d
, mais je veux savoir pourquoi ce morceau de code n'a pas fonctionné comme je m'y attendais. Il imprime simplement un répertoire à chacun d'eux. Par exemple, alors que la sortie de find
est:
.
./dir
./dir/file
la sortie de mon code est:
. : directory
./dir : directory
./dir/file : directory
Et sortie de
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
est
dir/file : file
Je travaille Ubuntu 14.10
et utilisefind (GNU findutils) 4.4.2
"{}"
. Pourquoi utilisez-vous echo
deux fois?
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' \;