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

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

我试过了

ls mystring*

但这将返回bash错误'Too many arguments'。我的下一个计划是使用

find ./mystring* -type f

但这个也有同样的问题。

代码看起来应该像这样

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

使用带有通配符的find:

find . -name 'mystring*'
ls | grep "^abc"

将为你提供所有带有substringabc的文件开始(这是OP特别需要的) 它只对当前目录起作用,而find递归地对子文件夹进行操作

要使用find仅用于包含字符串的文件开始,请尝试

找到。- name“abc”*

如果你想限制你的搜索只到文件,你应该考虑使用-type f在你的搜索

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

例子:

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

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

例子:

搜索文件并以MB为单位显示其大小

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