liunx查找以i开头的目录或文件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了liunx查找以i开头的目录或文件名相关的知识,希望对你有一定的参考价值。

方法一:直接使用通配符。
ls i*
这是最方便的一种方法,*表示匹配任何长度的任意字符,通过这样的方式就可以查找到所有以ls开头的文件。如果我们想查找文件名中含有la的文件,只需输入“ls *i*”即可。
方法二:我们可以使用管道,将ls的输出送入grep这个程序来实现。
ls -1 | grep "^i"
-1选项表示将列出的所有文件排成一列,方便grep的匹配(grep按行匹配)。
参考技术A 用find可以查找,例:find /etc -name “i*” -print 查找/etc下以i开头的文件。

查找文件名以指定字符串开头的所有文件?

【中文标题】查找文件名以指定字符串开头的所有文件?【英文标题】:Find all files with a filename beginning with a specified string? 【发布时间】:2011-05-01 09:32:57 【问题描述】:

我有一个目录,里面大约有 100000 个文件,我想对所有以指定字符串开头的文件执行一些功能,该字符串可能匹配数万个文件。

我试过了

ls mystring*

但这会返回 bash 错误“参数过多”。我的下一个计划是使用

find ./mystring* -type f

但这也有同样的问题。

代码需要看起来像

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

【问题讨论】:

您应该将find 传递给while,而不是for 循环。 此问题与How can I recursively find all files in current and subfolders based on wildcard matching?重复 【参考方案1】:

使用带有通配符的find

find . -name 'mystring*'

【讨论】:

并执行一些函数 "find . -name 'mystring*' -exec [command]" 例如删除 "find . -name 'mystring*' -exec rm \;"跨度> 其中 是文件名的占位符 :-)(因此您可以构建自己的操作) 这似乎返回所有结果包含的字符串? ...或find . -iname 'mystring*' 进行不区分大小写的搜索。 OP 指的是单个目录,因此在-name 之前插入-maxdepth 1 以限制查找到当前文件夹【参考方案2】:
ls | grep "^abc"  

会给你所有文件开始(这是OP特别要求的)子字符串abc。 它只对当前目录运行,而find 递归运行到子文件夹中。

要仅将find 用于以您的字符串开始的文件,请尝试

找到 . -name 'abc'*

【讨论】:

不要使用 ls | grep。使用带条件的 glob 或 for 循环以允许非字母数字文件名,请参阅github.com/koalaman/shellcheck/wiki/SC2010【参考方案3】:

如果您只想将搜索限制在文件中,您应该考虑在搜索中使用-type f

尝试同时使用-iname 进行不区分大小写的搜索

例子:

find /path -iname 'yourstring*' -type f

您还可以对没有管道符号或 xargs 的结果执行一些操作

例子:

搜索文件并以 MB 为单位显示它们的大小

find /path -iname 'yourstring*' -type f -exec du -sm  \;

【讨论】:

以上是关于liunx查找以i开头的目录或文件名的主要内容,如果未能解决你的问题,请参考以下文章

Linux如何查找特定字符文件或目录

linux如何查找以某个字母打头的文件或文件夹 比如,/etc目录下很多文件,我想列出所有以c开头的文件或文件

通配符

Liunx Mkdir

Liunx 和 Win中的软链接详解

如何列出当前目录下,以install开头的所有文件