我有一个大约有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
提前致谢, 瑞克
答案 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 {} \;