我在Ubuntu上,我想查找当前目录中的所有文件以及名称中包含字符串“John”的子目录。我知道grep
可以匹配文件中的内容,但我不知道如何将它与文件名一起使用。任何帮助将不胜感激。
答案 0 :(得分:172)
使用find命令
find . -type f -name "*John*"
答案 1 :(得分:22)
已经提供了正确的答案,但是为了让你学习如何帮助自己我以为我会以不同的方式投入一些有用的东西;如果你能用一个词来总结你想要实现的目标,那么在Linux上就有一个强大的帮助功能。
man -k <your search term>
这样做的目的是列出在简短描述中包含搜索词的所有命令。你通常很有可能找到你所追求的东西。 ;)
这个输出有时可能有点压倒性,我建议将其缩小到可执行文件,而不是所有可用的man-pages,如下所示:
man -k find | egrep '\(1\)'
或者,如果您还想查找需要更高权限级别的命令,请执行以下操作:
man -k find | egrep '\([18]\)'
答案 2 :(得分:2)
find
命令需要很长时间,因为它会扫描文件系统中的实际文件。
最快的方法是使用locate
命令,它会立即给出结果:
locate "John"
如果找不到该命令,则需要先安装mlocate
软件包并运行updatedb
命令,以便首次准备搜索数据库。
答案 3 :(得分:1)
使用ack简单。
只需输入ack <string to be searched>
答案 4 :(得分:1)
这是一个非常简单的解决方案,使用您要搜索的目录中的<DataGrid x:Name="TheList" Grid.Row="1" ItemsSource="{Binding People}" SelectionMode="Extended" SelectionUnit="FullRow" AutoGenerateColumns="False"
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}">
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=DataContext.AllSelected, RelativeSource={RelativeSource AncestorType=DataGrid}}"></CheckBox>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>
<DataGridTextColumn Binding="{Binding GivenName}" Header="Given Name" />
...
<DataGridTextColumn Binding="{Binding BranchName}" Header="Branch" />
</DataGrid.Columns>
</DataGrid>
命令。 tree
显示完整的文件路径,-f
用于将树的输出通过管道传输到|
,以查找名称中包含字符串grep
的文件。
filename