简体   繁体   中英

Command script recognizes files as directories

The following code should count the number of elements that a directory contains, but as well as it does it correctly, it also recognizes every element inside the current directory as a directory .

I don't know how not to show the elements that are not directories. How could I do it?

Code is here: http://pastebin.com/9R4eB4Xn

termlog.txt: https://justpaste.it/tgsl

As you may see, some files like .jpg or .zip are recognized as directories.

Your echo "Element is a directory" is between the if and the then . Move it after then :

for i in *
do
  if [ ! -f "$i" ] && [ -d "$i" ]
    then
      echo "Element is a directory"
      FILES=`ls -l "$i" | wc -l`  # List the content of "$i" directory
                                  # and count the number of lines
      FILES2=`expr $FILES - 1`    # Substract one because one line is
                                  # occupied with the number of blocks
      echo "$i: $FILES2"          # Shows the name of the directory and
                                  # the number of inputs that it has
  fi
done
for i in `find DIRECTORY -maxdepth 2 -type d`; do echo "$i: `ls -1 $i | wc -l`"; done

如果仅对当前目录感兴趣,则将DIRECTORY替换为。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM