Ich habe nur versucht, alle Verzeichnisse und Dateien im aktuellen Verzeichnis aufzulisten und auch zu schreiben, ob es sich um Dateien oder Verzeichnisse handelt, mit dem folgenden Befehl:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
Ich weiß, dass es ein dummer Befehl ist, ich kann andere Dinge wie -type f
oder verwenden -type d
, aber ich möchte erfahren, warum dieser Code nicht wie erwartet funktioniert hat. Es druckt nur das Verzeichnis für alle. Zum Beispiel während die Ausgabe von find
ist:
.
./dir
./dir/file
Ausgabe meines Codes ist:
. : directory
./dir : directory
./dir/file : directory
Und Ausgabe von
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
ist
dir/file : file
Ich arbeite an Ubuntu 14.10
und benutzefind (GNU findutils) 4.4.2
"{}"
. Warum benutzt du echo
zweimal?
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' \;