3

我有一个包含很多文件的目录(超过 4.000.000 个文件)。所有文件名都具有相同的模式:

PREFIX-XXXXXX-YY.ext

在哪里

  • XXXXXX包含字母和数字
  • YY包含数字
  • ext是文件的扩展名(.txt、.jpg)

文件结构有 12MB,因此该目录的列出/搜索需要很长时间。我将此目录的所有内容划分为子目录,取决于文件名,精确地是XXXXXX上述模式的第一个字母。

IE。

  • 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.

4

1 回答 1

1

你不能在文件系统层拥有这个,而不是创建链接并回到你原来的问题。我可以想到两个简单的方法。

采取1:脚本

您可以编写一个简短的脚本来为您重写名称。

假设您有一个rewrite脚本,它接受PREFIX-AXXXX-*并输出main_directory/A/PREFIX-AXXXX-*. 然后,您可以将您的ls线路更改为:

$ ls `rewrite PREFIX-AXXXXX-*`

这可以使用 或任何其他即时文本转换工具轻松sed完成awk

Shell 程序是可组合的,这是有原因的!:)

采取 2:嵌入更快的文件系统

您可以通过使用安装在主目录中的更快的文件系统来消除重组和重写名称。XFS听起来不错。它应该毫不费力地消除您的性能问题。

然而,这需要更深入地了解发生了什么对日常使用有效。

编辑是一篇关于如何创建虚拟用户空间文件系统的文章。

编辑2:实际上不,我认为XFS不会削减它。不过,也许是另一个文件系统。

于 2013-03-22T11:02:22.570 回答