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开头的目录或文件名的主要内容,如果未能解决你的问题,请参考以下文章