$ ls | wc -l
Whilst this is good we will not show hidden files or directories. Hidden files start with a dot. To list these we can use the option -a or -A with ls. To show all files we use -a and almost all files with -A. Yes almost all, we exclude the . and .. directories which are system links.
[tux@packstack ~]$ ls
dir1 dir2 dir3 dir4
[tux@packstack ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc dir1 dir2 dir3 dir4
[tux@packstack ~]$ ls -A
.bash_logout .bash_profile .bashrc dir1 dir2 dir3 dir4
[tux@packstack ~]$
If we want to count the output we are better not count the . and .. directory.
[tux@packstack ~]$ ls -A | wc -l
7
[tux@packstack ~]$
From the output we can see that we have a total of 7 items in the current directory.
If we want to count directories and files separetely then we can use the GNU command find. To list files we can use the option -type f. Of course we could count the output as before.
[tux@packstack ~]$ find . -type f
./.bash_logout
./.bash_profile
./.bashrc
Listing directories is similar but we will see that we will include the current directory which we may not want.
[tux@packstack ~]$ find . -type d
.
./dir1
./dir2
./dir3
./dir4
To exclude the current directory from the count we can use the option -mindepth 1 to ensure that we start with the directories content and not the directory.[tux@packstack ~]$
find . -mindepth 1 -type d
./dir1
./dir2
./dir3
./dir4
So we can see that counting files and directories in Linux is not difficult but it can be even easier. Well at least counting directories. The hard link count for a directory can be used to show how many subdirectories there are in the directory. Each subdirectory has a link back to the parent. A directory start with a hard link count of 2 so just remove 2 from the current hard link count to see how many subdirectories.
[tux@packstack ~]$ ls -ld /etc
drwxr-xr-x. 112 root root 8192 Jun 8 15:03 /etc
The etc directory has 110 subdirectories on my system, 112 – 2 = 110
0 comments:
Post a Comment