Tôi chỉ cố gắng liệt kê tất cả các thư mục và tệp trong thư mục hiện tại và cũng viết nếu chúng là tệp hoặc thư mục với lệnh sau:
find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \;
Tôi biết đó là một lệnh ngớ ngẩn, tôi có thể sử dụng những thứ khác như -type fhoặc -type d, nhưng tôi muốn tìm hiểu lý do tại sao đoạn mã đó không hoạt động như tôi mong đợi. Nó chỉ in thư mục cho tất cả chúng. Ví dụ: trong khi đầu ra findlà:
.
./dir
./dir/file
đầu ra của mã của tôi là:
. : directory
./dir : directory
./dir/file : directory
Và đầu ra của
echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo directory;fi`
Là
dir/file : file
Tôi đang làm việc Ubuntu 14.10và sử dụngfind (GNU findutils) 4.4.2
"{}". Tại sao bạn sử dụng echohai lần?
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' \;