Recursively counting files in a Linux directory

后端 未结 21 1108
既然无缘
既然无缘 2020-11-28 17:17

How can I recursively count files in a Linux directory?

I found this:

find DIR_NAME -type f ¦ wc -l

But when I run this it returns

21条回答
  •  情话喂你
    2020-11-28 17:44

    On my computer, rsync is a little bit faster than find | wc -l in the accepted answer:

    $ rsync --stats --dry-run -ax /path/to/dir /tmp
    
    Number of files: 173076
    Number of files transferred: 150481
    Total file size: 8414946241 bytes
    Total transferred file size: 8414932602 bytes
    

    The second line has the number of files, 150,481 in the above example. As a bonus you get the total size as well (in bytes).

    Remarks:

    • the first line is a count of files, directories, symlinks, etc all together, that's why it is bigger than the second line.
    • the --dry-run (or -n for short) option is important to not actually transfer the files!
    • I used the -x option to "don't cross filesystem boundaries", which means if you execute it for / and you have external hard disks attached, it will only count the files on the root partition.

提交回复
热议问题