我有一个目录,其中大约有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

当前回答

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

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

例子:

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

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

例子:

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

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

其他回答

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

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

例子:

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

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

例子:

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

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
ls | grep "^abc"  

将为您提供所有以substringabc开头的文件(这是OP特别要求的)。 它只对当前目录进行操作,而find则递归地对子文件夹进行操作。

要使用find仅查找以字符串try开头的文件

找到。- name“abc”*

使用find和通配符:

find . -name 'mystring*'