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

时间:2010-10-27 15:26:45

标签: bash find

我有一个大约有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

提前致谢, 瑞克

3 个答案:

答案 0 :(得分:229)

使用

find . -name 'mystring*'

答案 1 :(得分:22)

ls | grep "^a"  

将为您提供以字母a开头的所有文件,并且只对当前目录起作用,而find将默认深入查看子目录。

我不是说它更好 - 只是一个不同的角度。

答案 2 :(得分:3)

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

也尝试将-iname用于不区分大小写的搜索

示例:

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

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

示例:

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

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