- Linux Command , how to find files by size larger than x?
- 4 Answers 4
- How to List All Files Ordered by Size in Linux
- How to List or Sort All Files by Size in Linux
- List or Sort All Files by Size in Linux
- List All Files Ordered by Size
- List or Sort Files by Size According to a Specific File Type
- Exclude Directories When Listing or Sorting Files by Size
- List or Sort All Files Using a Common Unit Size
- List files over a specific size in current directory and all subdirectories
- 5 Answers 5
Linux Command , how to find files by size larger than x?
I’m trying to find files with size larger than «x» , ex: 32 bytes But what I found in ls —help was only ls -S , that just sort by size and not satisfied my demand I’m new to Linux , I’ve tried Google but I don’t know what keywords should I use to find answer , could somebody give me advice , thank you !
Your question is not about programing but about linux command that would be better in serverfault.com. If you want to ask something about shell script please read this first. stackoverflow.com/help/mcve
4 Answers 4
Try to use the power of find utility.
Find files greater than 32 bytes:
Of course you could also ask for files smaller than 32 bytes:
And files with exact 32 bytes:
For files with 32 bytes or more:
Or not smaller than 32 bytes (the same as above, but written another way):
And files between 32 and 64 bytes:
And you can also apply other common suffixes:
If you get find: illegal option — i error, specify the folder to search in after find . Add a dot to find files in the current folder: find . -size +32k -size -64M
You can change 32 for the size you want. In this case, I used your example.
Both answers you two provided me are excellent 😀 But I think I will give @rslemos the best answer tag since he’s «1 minute earier» , but still thanks to you !
Explanation: Use unix command find Using -size oprator
The find utility recursively descends the directory tree for each path listed, evaluating an expression (composed of the ‘primaries’ and ‘operands’) in terms of each file in the tree.
Solution: According to the documentation
-size n[ckMGTP] True if the file's size, rounded up, in 512-byte blocks is n. If n is fol- lowed by a c, than the primary is true if the file's size is n bytes (charac- ters). Similarly if n is followed by a scale indicator than the file's size is compared to n scaled as: k kilobytes (1024 bytes) M megabytes (1024 kilobytes) G gigabytes (1024 megabytes) T terabytes (1024 gigabytes) P petabytes (1024 terabytes)
Usage: perform find operation with -size flag and threshold measurement arguments: more than(+)/less than(-), number(n) and measurement type (k/M/G/T/P).
Formula: find -size [+/-]
1.Greater Than — Find all files in my current directory (.) that greater than 500 kilobyte
2.Less Than — Find all files in my current directory (.) that less than 100 megabyte.
3.Range — Find specific file (test) in my current directory (.) that greater than 500 kilobyte less than 100 megabyte (500k-1000k)
find . -name "test" -size +500k -size -100M
4.Complex Range with Regex Find all .mkv files in all filesystem (root /) that are greater than 1 gigabyte and created this month, and present info of them.
find / -name "*.mkv" -size +1G -type f -ctime -4w | xargs ls -la
How to List All Files Ordered by Size in Linux
In one of our several articles about listing files using the popular ls command, we covered how to list and sort files by last modification time (date and time) in Linux. In this short handy article, we will present a number of useful ls command options to list all of the files in a certain directory and sort them by file size in Linux.
To list all files in a directory, open a terminal window and run the following command. Note that when ls invoked without any arguments, it will list the files in the current working directory.
In the following command the -l flag means long listing and -a tells ls to list all files including (.) or hidden files. To avoid showing the . and .. files, use the -A option instead of -a .
$ ls -la OR $ ls -la /var/www/html/admin_portal/
To list all files and sort them by size, use the -S option. By default, it displays output in descending order (biggest to smallest in size).
$ ls -laS /var/www/html/admin_portal/
You can output the file sizes in human-readable format by adding the -h option as shown.
$ ls -laSh /var/www/html/admin_portal/
And to sort in reverse order, add the -r flag as follows.
$ ls -laShr /var/www/html/admin_portal/
Besides, you can list subdirectories recursively using the -R option.
$ ls -laShR /var/www/html/admin_portal/
You will also find the following related articles useful:
If you any other way to list the files ordered by sizes in Linux, do share with us or do you have questions or thoughts to share about this guide? If yes, reach us via the feedback form below.
How to List or Sort All Files by Size in Linux
The Linux ls command is a handy tool for listing files inside a directory. In the past, we have covered how to list and sort files by last modification time using the ls command.
In this article, we will go a step further and explore ways that you can list all the files in a specific directory and sort them by file size.
List or Sort All Files by Size in Linux
To list all files contained in a directory, launch your terminal and run the following command. When invoked without any arguments, the ls command simply lists the files and folders inside a directory.
In the following command the -l flag means long listing and -a tells ls to list all files including hidden files – which are prefixed by a period (.) . To avoid displaying the . and .. files, use the -A option instead of -a .
List All Files Ordered by Size
To list all the files and sort them by size, use the -S flag. By default, it displays output in descending order (biggest to smallest in size).
You can display the output in a human-readable format by appending the -h option as shown.
In addition, you can sort in reverse order (from the smallest to the largest) by adding the -r option as shown.
List or Sort Files by Size According to a Specific File Type
You can list or sort out files by size by applying file type as a filter. For example, to list or sort zipped files by size, use the wildcard symbol as shown.
Exclude Directories When Listing or Sorting Files by Size
To exclude directories in listing or sorting files by size, use the following syntax:
List or Sort All Files Using a Common Unit Size
In the above examples, the file sizes have been printed in different unit sizes, i.e Kilobytes (k) and Megabytes (M).
To print or display all file sizes in a specific unit, for example in Megabytes, add the —block-size= option specifying Megabytes as M as shown below.
From the output, you can see the file sizes are now in MB only.
NOTE: For files less than the specified size (in this case MB), the size will be rounded off to the nearest MB. This implies files in Kilobytes and bytes will appear as 1MB. The same will hold true for any specified size.
You can also print the size in KB units by replacing M with k:
This time around, the file sizes are accurately displayed in kilobytes since no file is less than a kilobyte, and hence no rounding off to the nearest kilobyte is done.
Conclusion
And that’s it for this lecture. In this article, we have demonstrated how to list or sort files by size in Linux. We hope you found this information insightful.
List files over a specific size in current directory and all subdirectories
How can I display all files greater than 10k bytes in my current directory and it’s subdirectories. Tried ls -size +10k but that didn’t work.
could you please expand on this question, or at least explain why the two solutions that were posted — and work, are not appropriate to your assignment. (edit: added please)
ls doesn’t have any options to filter output by size. It does have a —size option (with no arguments) which prints the size of each file in blocks. By the way, -size +10k seems like a syntax that is used with find .
Stack Overflow is a site for programming and development questions. This question appears to be off-topic because it is not about programming or development. See What topics can I ask about here in the Help Center. Perhaps Super User or Unix & Linux Stack Exchange would be a better place to ask. Also see Where do I post questions about Dev Ops?
5 Answers 5
find . -size +10k -exec ls -lh <> \+
the first part of this is identical to @sputnicks answer, and sucesffully finds all files in the directory over 10k (don’t confuse k with K), my addition, the second part then executes ls -lh or ls that lists(-l) the files by human readable size(-h). negate the h if you prefer. of course the <> is the file itself, and the \+ is simply an alternative to \;
which in practice \; would repeat or:
ls -l found.file; ls -l found.file.2; ls -l found.file.3
where \+ display it as one statement or:
ls -l found.file found.file.2 found.file.3
Additionaly, you may want the listing ordered by size. Which is relatively easy to accomplish. I would at the -s option to ls , so ls -ls and then pipe it to sort -n to sort numerically
find . -size +10k -exec ls -ls <> \+ | sort -n
or in reverse order add an -r :
find . -size +10k -exec ls -ls <> \+ | sort -nr
finally, your title says find biggest file in directory. You can do that by then piping the code to tail
find . -size +10k -exec ls -ls <> \+ | sort -n | tail -1 would find you the largest file in the directory and its sub directories.
note you could also sort files by size by using -S, and negate the need for sort. but to find the largest file you would need to use head so
find . -size +10k -exec ls -lS <> \+ | head -1
the benefit of doing it with -S and not sort is one, you don’t have to type sort -n and two you can also use -h the human readable size option. which is one of my favorite to use, but is not available with older versisions of ls , for example we have an old centOs 4 server at work that doesn’t have -h