©2018 by Zach Pfeffer

SEARCH THIS SITE

Find all text files

May 24, 2018

This blog is a repost of the best answer I've found to-date for: find all text files.

 

It also contains some additional info on how the method works.

 

Read to the end for an "improved" version.

 

Command

-From stackoverflow submitted by crudcore

 

 

How this Works

 

From the original post:

The -I option to grep tells it to immediately ignore binary files and the . option along with the -q will make it immediately match text files so it goes very fast. You can change the -print to a -print0 for piping into an xargs -0 or something if you are concerned about spaces (thanks for the tip, @lucas.werkmeister!)Also the first dot is only necessary for certain BSD versions of find such as on OS X, but it doesn't hurt anything just having it there all the time if you want to put this in an alias or something.

 

 

Additional Commentary

 

find evaluates each expression for each file. There are 3 expressions here: -type, -exec and -print. If type is not a file find moves on. If the exec doesn't return 0 find moves on. Only if the type is a file and exec returns non-zero will the print execute. To see this put the print first:

In this form every file will be output since print is always true.

 

 

"Improved"

 

-and isn't needed

 

There is an implicit -and between each expression (from man find, look at definition of -and)

 

. isn't needed

 

If you don't list a starting point find assumes '.' (from man find, first paragraph under Description)

 

The "improved" version is:

"improved" is in quotes because this change doesn't make the command noticeably faster and may actually be less desirable since people typically see find with . and -and and may therefore be confused.

 

 

Additional Examples

Find files (-type f) whose names contain do_ (-name "*do_*") that are not binary (-exec grep -Iq . {} \;) that contain the string initrd (-exec grep -REns "initrd" {} \;) echo a ^^^^ then print the file name (-print) then print a new line (echo " " \;) 

 

References

  • Tux from link

  • Free Online HTML Escape / Unescape Tool - FreeFormatter.com @ link

Please reload

Our Recent Posts

A Fix for "You don't have permission to create items on this site: https://yoursite.sharepoint.com/sites/pwa"

September 25, 2019

Create a Tree-View of a Directory on Linux with 'tree'

August 17, 2019

Use draw.io in Google Drive (and Get Rid of draw.io )

June 30, 2019

1/1
Please reload

Tags

Please reload