如何自动对文件进行排序?

如何自动对文件进行排序?

我的外置硬盘中有很多文件,所以我想自动告诉计算机将所有文件按大小、扩展名、名称和其他变量分类到文件夹中。是否有任何程序可以让我执行这些任务。请教我如何安装它。

答案1

如果你可以使用 bash 命令,你应该看看find 命令的手册页手册页图标

find . -name \*.txt -size +599k -exec mv {} bigTextFolder \;

使用此行,您可以将所有大于或等于 600KB 的 .txt 文件移动到 bigTextFolder 文件夹中。您可以在网上找到很多有关 find 的文档(初学者 Linux 指南) 以及手册页中所有可用的测试列表(第一个链接)。

要理解该命令,请查看参数:

  • .find是查找文件的目录。您可以用硬盘的路径替换它。
  • -name \*.txt是名称过滤器。如果您使用 转义通配符 (*),它可以使用通配符。您可以这样理解“查找所有名称以 .txt 结尾的文件”。将其替换为您要查找的模式:
    • 所有以以下开头的文件:find . -name a\*
    • 文件 aba.txt:find . -name aba.txt
  • -size +599k是大小过滤器。这里说的是“查找大小严格大于 599KB 的所有文件”。将 599 改为你想要的大小,k 就是单位。
  • -exec允许在找到文件后执行另一个命令。因此,在这里,对于找到的每个文件,我们都会执行mv fileFounded targetFolder{}将被替换为您的结果。此部分必须以 结尾\;

请记住,您还有很多其他过滤器:类型、日期、所有者、权限......

答案2

我不知道是否有现成的程序可以使用,但你可以通过组合以下命令来编写一个 shell 脚本

du -a | sort -nr

将按大小的反向顺序显示文件。

你可以将它与上面提到的 NorTicUs 脚本结合使用

find . -name \*.txt -size +599k -exec mv {} bigTextFolder \;

通过将 599K 替换为保存第一个命令的输出的变量来指定动态大小。

答案3

我正在编写一个 Python 脚本,用于按文件扩展名对文件进行排序。将来它会有更多功能,但我认为这可以帮到你 https://github.com/phaalonso/FileOrganizer

相关内容