Find all files with name containing string

2019-06-14 15:00发布

我一直在寻找一个命令,将包含在文件名的字符串当前目录返回文件。 我所看到的locatefind能够找到开头的一些文件中的命令first_word*或结尾的东西*.jpg

我怎样才能返回包含在文件名的字符串的文件列表?

例如,如果2012-06-04-touch-multiple-files-in-linux.markdown是在当前目录中的文件。

我怎么能回到这个文件,包含字符串别人touch ? 使用命令如find '/touch/'

Answer 1:

使用find

find . -maxdepth 1 -name "*string*" -print

它会查找当前目录下的所有文件(删除maxdepth 1如果你想递归)包含“串”,将打印在屏幕上。

如果你想避免包含文件“:”,你可以输入:

find . -maxdepth 1 -name "*string*" ! -name "*:*" -print

如果你想使用grep (但我认为这是没有必要的,只要你不想来检查文件内容),可以使用:

ls | grep touch

但是,我再说一遍, find是你的任务更好的和更清洁的解决方案。



Answer 2:

如下使用grep:

grep -R "touch" .

-R装置递归。 如果你宁愿不进入子目录,然后跳过它。

-i是指“忽略大小写”。 你可能会觉得这值得一试为好。



Answer 3:

-maxdepth选项应该是前-name选项,如下图所示,

find . -maxdepth 1 -name "string" -print


Answer 4:

find $HOME -name "hello.c" -print

这将搜索整个$HOME (即/home/username/ )系统命名为“hello.c的”的任何文件,并显示他们的路径名:

/Users/user/Downloads/hello.c
/Users/user/hello.c

但是,它不会匹配HELLO.CHellO.C 。 为了匹配不区分大小写传球-iname选项,如下所示:

find $HOME -iname "hello.c" -print

样本输出:

/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c

传递-type f选项,只搜索文件:

find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print

-iname的作品无论是在GNU或BSD(包括OS X)的版本find命令。 如果您find命令的版本不支持-iname ,尝试使用以下语法grep命令:

find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"

或尝试

find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print

样本输出:

/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c


Answer 5:

如果字符串是在名称的开头,你可以这样做

$ compgen -f .bash
.bashrc
.bash_profile
.bash_prompt


Answer 6:

grep -R "somestring" | cut -d ":" -f 1


Answer 7:

已经提供给了许多解决方案的替代方案是利用水珠的** 。 当您使用bash使用选项globstarshopt -s globstar ),或者你使用zsh ,你可以使用水珠**此。

**/bar

做一个递归目录搜索的文件bar (可能包括文件bar在当前目录)。 备注,这不能与其他形式的相同的路径段内通配的组合; 在这种情况下, *运营商恢复到自己平时的效果。

需要注意的是之间存在微妙的差异zshbash在这里。 虽然bash将穿越软链接目录zsh不会。 对于这一点,你必须使用水珠***/zsh



Answer 8:

find / -exec grep -lR "{test-string}" {} \;


文章来源: Find all files with name containing string