Saya hanya mencoba daftar semua direktori dan file di bawah direktori saat ini dan juga menulis apakah mereka file atau direktori dengan perintah berikut:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
Saya tahu ini adalah perintah yang konyol, saya dapat menggunakan hal-hal lain seperti -type f
atau -type d
, tetapi saya ingin belajar mengapa potongan kode itu tidak berfungsi seperti yang saya harapkan. Itu hanya mencetak direktori untuk mereka semua. Sebagai contoh sementara output dari find
adalah:
.
./dir
./dir/file
output dari kode saya adalah:
. : directory
./dir : directory
./dir/file : directory
Dan output dari
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
adalah
dir/file : file
Saya sedang mengerjakan Ubuntu 14.10
dan menggunakanfind (GNU findutils) 4.4.2
"{}"
. Mengapa Anda menggunakan echo
dua kali?
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' \;