How to find the largest file in a directory and its subdirectories?
We're just starting a UNIX class and are learning a variety of Bash commands. Our assignment involves performing various commands on a directory that has a number of folders under it as well.
I know how to list and count all the regular files from the root folder using:
find . -type l | wc -l
But I'd like to know where to go from there in order to find the largest file in the whole directory. I've seen somethings regarding a du
command, but we haven't learned that, so in the repertoire of things we've learned I assume we need to somehow connect it to the ls -t
command.
And pardon me if my 'lingo' isn't correct, I'm still getting used to it!
Quote from this link-
If you want to find and print the top 10 largest files names (not directories) in a particular directory and its sub directories
$ find . -printf '%s %pn'|sort -nr|head
To restrict the search to the present directory use "-maxdepth 1" with find.
$ find . -maxdepth 1 -printf '%s %pn'|sort -nr|head
And to print the top 10 largest "files and directories":
$ du -a . | sort -nr | head
** Use "head -n X" instead of the only "head" above to print the top X largest files (in all the above examples)
To find the top 25 files in the current directory and its subdirectories:
find . -type f -exec ls -al {} ; | sort -nr -k5 | head -n 25
This will output the top 25 files by sorting based on the size of the files via the "sort -nr -k5" piped command.
find . -type f | xargs ls -lS | head -n 1
outputs
-rw-r--r-- 1 nneonneo staff 9274991 Apr 11 02:29 ./devel/misc/test.out
If you just want the filename:
find . -type f | xargs ls -1S | head -n 1
This avoids using awk
and allows you to use whatever flags you want in ls
.
Caveat. Because xargs
tries to avoid building overlong command lines, this might fail if you run it on a directory with a lot of files because ls
ends up executing more than once. It's not an insurmountable problem (you can collect the head -n 1
output from each ls
invocation, and run ls -S
again, looping until you have a single file), but it does mar this approach somewhat.
上一篇: 使用shell脚本计算文件和目录
下一篇: 如何查找目录及其子目录中的最大文件?