在Linux中如何查找特定文件夹中的特定文件

25

这是我的文件夹结构:

/site1/myFolder/otherFolder1/a.gif

/site1/myFolder/otherFolder1/b.png

/site1/myFolder/otherFolder1/c.php

...

/site2/myFolder/otherFolder2/d.gif

/site2/myFolder/otherFolder2/e.png

/site2/myFolder/otherFolder2/f.php

...

/site3/myFolder/otherFolder3/g.gif

/site3/myFolder/otherFolder3/h.png

/site3/myFolder/otherFolder3/i.php

...

已经完成了这一部分:

find /var/www/html -type d -name myFolder -exec find {} -name "*.php"  \;

for i in `find /var/www/html -type d -name myFolder -exec find {} -name "*.php"  \;`
  do
    some_house_keeping_here
  done

但我想做类似这样的事情:

find /var/www/html -type d -name myFolder -exec find {} -name "*.php" -exec do_some_housekeeping {} \; \;

为什么它被关闭而不是移动到SuperUser?我们需要答案。 - Sergei Krivonos
答案在这里http://alvinalexander.com/blog/post/linux-unix/find-how-search-multiple-folders-directories-unix - Sergei Krivonos
2个回答

39
你可以使用-path选项代替-name。它将使用正则表达式匹配整个绝对路径。
find /var/www/html -path "*/myFolder/*.php" -exec do_some_housekeeping {} \;

这个目前运作良好,但我认为在许多其他情况下,查找中的查找可能会很有用。对此方面的任何帮助将不胜感激。 - user1880957
1
这是一个方便的回答。只想指出,在这种情况下,"*/myFolder/*.php" 不是一个正则表达式。它是一个文件名模式,并且可能会应用文件通配符规则。正则表达式是一种不同的模式语言。 - Cheeso

4

有一个-path标志可能会很有帮助。

find /var/www/html -path "myFolder/otherFolder?" -name "*.php" -exec do_some_housekeeping {} \;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接