我有一个包含大量文件的目录(超过4.000.000个文件)。所有文件名都具有相同的模式:
PREFIX-XXXXXX-YY.ext
,其中
XXXXXX
包含字母和数字YY
包含数字ext
是文件(.txt,.jpg)文件结构有12MB,因此列出/搜索此目录需要很长时间。我把这个目录的所有内容分成子目录,取决于文件名,从上面的模式中XXXXXX
的第一个字母。
即
main_directory/A/PREFIX-AXXXXX-YY.ext
main_directory/B/PREFIX-BXXXXX-YY.ext
main_directory/1/PREFIX-1XXXXX-YY.ext
当我输入linux命令时,在Linux中轻松制定规则
test:/home/usr/admin # ls main_directory/PREFIX-AXXXXX-*
我将从main_directory / A /目录中获取文件名列表?此规则必须仅适用于main_directory
。
答案 0 :(得分:1)
您无法在文件系统层获得此功能,无需创建链接并回到原始问题。我可以想出两个简单的方法。
您可以编写一个简短的脚本来为您重写名称。
假设您有一个rewrite
脚本,该脚本占用了PREFIX-AXXXX-*
并输出了main_directory/A/PREFIX-AXXXX-*
。然后,您可以将ls
行更改为:
$ ls `rewrite PREFIX-AXXXXX-*`
使用sed
,awk
或任何其他即时文本转换工具即可轻松完成此操作。
Shell程序可以组合是有原因的! :)
您可以使用安装在主目录中的更快的文件系统来取消重组和重写名称。 XFS听起来不错。它应该毫不费力地消除您的性能问题。
然而,这需要更深入地了解日常使用的有效性。
修改:Here是一篇关于如何创建虚拟用户空间文件系统的文章。
编辑2 :实际上不,我认为XFS
不会削减它。可能是另一个文件系统。