Language Selection

English French German Italian Portuguese Spanish

Tutorial: Using the 'find' Command

Filed under
HowTos

GNU find is a powerful command-line utility that lets you search for files and folders in a hierarchical tree directory structure. It is the backend for all those utilities out there like the graphical searching in KDE or GNOME. However, find can be a little hard to handle at first by beginners. In this tutorial I will try to explain some of the capabilities of find, show some useful one-liners and provide more explanations regarding this command.

In this tutorial I will start from the basic ways of using find and head up into showing more complicated (but very useful) ways of getting the most out of it, in order to search and display exactly the results that you are looking for. The version of find that I currently have installed is 4.4.2, as it comes with Ubuntu 12.04 Precise Pangolin, and Bash 4.2.20 (older versions should work without problem too). Special thanks go to http://www.commandlinefu.com/ for some really great one-liners.

If you’re not familiar with the terminal, command-line or Linux in general I suggest you read my introductory tutorial here: Introduction to Linux Command-Line for Beginners.
The Basics

The simplest way of using find is by typying it in a terminal:

find

This will list all the files and folders (including hidden ones and their sub-files and sub-folders) in the current directory, following the whole hierarchical structure. This will usually generate a long list of files and doesn’t seem to give us much. It’s exactly the same as:

find .

Where . is the currently working directory. This will list all the files and folders in the currently working directory.

It’s probably best to use a new folder somewhere in the file system to see this in effect, a folder which doesn’t have many sub-folders and files.

Moving on, let’s search for all the files that include the name profile in their filename:

find . -name *profile*

* is a wildcard that replaces any number of characters or no character. The above command searches in the current folder for the name *profile*.

find /usr/share -name FreeSans*

This will search inside /usr/share for all the files that start with FreeSans (and end in whatever characters e.g. FreeSans.ttf). I recommend using double quotes around the pattern to search for e.g. find . -name “.bash*”.

Another example:

find /usr/share -name FreeSans* | grep Oblique

So now you know how to search for a certain filename in a specific location.
Uppercase/Lowercase

Sometimes you need to ignore uppercase and lowercase and just search for text by ignoring case-sensitive. We’ll to this just by replacing -name with -iname:

find /usr/share -iname FREESANS*

Date

find . -mtime +3 -iname *somefile*

This will search for files that were created earlier than 3 days ago.
Get only the filename instead of whole path to the file

find will return the whole path to the files that match the search pattern, so in order to get only the filename you can use the fprintf argument command:

find /usr/bin -name "alsa*"

To get only the filename, use:

find /usr/bin -name "alsa*" -printf "%f\n"

By size

To search for files by size, use the -size argument, for example:

find /usr -size +500k -name "*png"

This will search inside /usr for files which are equal to or larger than 500 KB and are ending in png. Another example:

find /usr -size +1M -name "*png"

Which will search for files which are bigger than 1 MB in size. Instead of the plus sign, you could use minus in order to search for files that are smaller than a specified size:

find /usr -size -10c -name "*png"

The -10c specifier tells find to only display files which are smaller than 10 bytes. Don’t forget the + or – preceding the desired filesize.
Automatically list details about the found files

You could use a pipe and the xargs command for this:

find /usr/lib -size +2M -name "*.so" | xargs ls -lh

Notice that this will list the files in the current directory if find returns no file.
Searching for files than contain specific text

This is probably one of the most useful ways to search for some file which name you’ve forgot but you know some of the text it contains inside.

find . -name "*bash*" -exec grep -l "aliases" {} +

This will search in all the files that contain the patter bash for the word aliases. Those files that contain this pattern will be printed out.
Some useful one-liners

Find top 20 largest files:

find . -type f -print0 | xargs -0 du -h | sort -hr | head -20

References

Special thanks go to http://www.commandlinefu.com/ and the following articles:

https://www.linux.com/learn/tutorials/316404-10-tips-for-using-gnu-find
http://www.ibm.com/developerworks/aix/library/au-unix-find.html
http://www.linux.ie/newusers/beginners-linux-guide/find.php
http://www.cyberciti.biz/faq/howto-recursively-search-all-files-for-words/

http://www.tuxarena.com/2012/03/tutorial-using-the-find-command

More in Tux Machines

Avidemux 2.6.13 Open-Source Video Editor Gets AAC/ADTS Import and Export

The developers of the Avidemux open-source and cross-platform video editor software have announced a new maintenance update in the 2.6 series, bringing multiple improvements, bug fixes, and a handful of new features. Read more

5 Best Linux Distros for Security

Security is nothing new to Linux distributions. Linux distros have always emphasized security and related matters like firewalls, penetration testing, anonymity, and privacy. So it is hardly surprising that security conscious distributions are common place. For instance, Distrowatch lists sixteen distros that specialize in firewalls, and four for privacy. Most of these specialty security distributions, however, share the same drawback: they are tools for experts, not average users. Only recently have security distributions tried to make security features generally accessible for desktop users. Read more

Linux Foundation and Linux

  • How IoTivity and AllJoyn Could Combine
    At the Embedded Linux Conference in April, Open Connectivity Foundation (OCF) Executive Director Mike Richmond concluded his keynote on the potential for interoperability between the OCF’s IoTivity IoT framework and the AllSeen Alliance’s AllJoyn spec by inviting to the stage Greg Burns, the chief architect of AllJoyn. Burns briefly shared his opinion that not only was there no major technical obstacle to combining these two major open source IoT specs, but that by taking the best of both standards, a hybrid could emerge that improves upon both. Later in the day, Burns gave a technical overview of how such a hybrid could be crafted in “Evolving a Best-of-Breed IoT Framework.” (See video below.) Burns stated in both talks that his opinions in no way reflect the official position of OCF or the AllSeen Alliance. At the time of the ELC talk in April, Burns had recently left his job as VP of Engineering at Qualcomm and Chair of the Technical Steering Committee at the AllSeen Alliance to take on the position of Chief IoT Software Technologist in the Open Source Technology Center at Intel Corp.
  • ​Linus Torvalds' love-hate relationship with the GPL
    Linux's founder appreciates what the GNU General Public License has given Linux, but he doesn't appreciate how some open-source lawyers are trying to enforce it in court.
  • Linus Torvalds reflects on 25 years of Linux
    LinuxCon North America concluded in Toronto, Canada on August 25th, the day Linux was celebrating its 25th anniversary. Linus Torvalds, the creator of Linux, and Dirk Hohndel, VP and chief of open source at VMware, sat down for a conversation at the event and reflected upon the past 25 years. Here are some of the highlights of that conversation.
  • 6 things you should know from Linux's first 25 years
    Red Hat was founded in 1993, two years after Linux was announced and the company has been one of the top contributors to Linux. There is a symbiotic relationship between the company and the project. Whitehurst pointed out that it’s hard to talk about the history of Red Hat without talking about Linux and vice versa.
  • There Is Talk Of Resuming OpenChrome VIA KMS/DRM Driver Development
    Two or so years back or so it was looking hopeful that the mainline Linux kernel would finally have a proper VIA DRM/KMS driver for the unfortunate ones still have VIA x86 hardware and using the integrated graphics. However, that work was ultimately abandoned but there is talk of it being restored.

Security News

  • New FairWare Ransomware targeting Linux Computers [Ed: probably just a side effect of keeping servers unpatched]
    A new attack called FaireWare Ransomware is targeting Linux users where the attackers hack a Linux server, delete the web folder, and then demand a ransom payment of two bitcoins to get their files back. In this attack, the attackers most likely do not encrypt the files, and if they do retain the files, probably just upload it to a server under their control.
  • How do we explain email to an "expert"?
    This has been a pretty wild week, more wild than usual I think we can all agree. The topic I found the most interesting wasn't about one of the countless 0day flaws, it was a story from Slate titled: In Praise of the Private Email Server The TL;DR says running your own email server is a great idea. Almost everyone came out proclaiming it a terrible idea. I agree it's a terrible idea, but this also got me thinking. How do you explain this to someone who doesn't really understand what's going on? There are three primary groups of people. 1) People who know they know nothing 2) People who think they're experts 3) People who are actually experts
  • Why the term “zero day” needs to be in your brand’s cybersecurity vocabulary
    Linux is “open source” which means anyone can look at the code and point out flaws. In that sense, I’d say Linus Torvalds doesn’t have to be as omniscient as Tim Cook. Linux source code isn’t hidden behind closed doors. My understanding is, all the Linux code is out there for anyone to see, naked for anyone to scrutinize, which is why certain countries feel safer using it–there’s no hidden agenda or secret “back door” lurking in the shadows. Does that mean Android phones are safer? That’s up for debate.