Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

On a Linux server, I need to find all files with a certain file extension in the current directory and all sub-directories.

Previously, I have always using the following command:

find . -type f | grep -i *.php

However, it doesn't find hidden files, for example .myhiddenphpfile.php. The following finds the hidden php files, but not the non-hidden ones:

find . -type f | grep -i \.*.php

How can I find both the hidden and non-hidden php files in the same command?

share|improve this question
    
You know that the "re" in "grep" stands for "regular expression", right? I have no clue how either of those command lines are supposed to work... – Ignacio Vazquez-Abrams May 6 '10 at 7:56
up vote 14 down vote accepted

...

find . -type f -name '*.php'
share|improve this answer
    
Thanks - and sorry for my stupidity ;-) – Tom May 6 '10 at 8:03

The issue is grep, not the find (try just 'find . -type f' to see what I mean).

If you don't quote the '*' then the shell will expand it - before grep even sees its command line arguments; since the shell doesn't find hidden files by default, you'll have issues.

The reason it's only finding the hidden file is because the shell has already expanded the '*' and so grep is only matching that one file.

share|improve this answer

It's better to use iname (case insensitive).

I use this find command to search hidden files:

find /path -type f -iname ".*" -ls

Extracted from: http://www.sysadmit.com/2016/03/linux-ver-archivos-ocultos.html

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.