如何通过终端对目录内的文件进行排序?

如何通过终端对目录内的文件进行排序?

我想根据大小对主目录中的子目录进行排序,并且还想通过终端根据文件创建日期对子目录中的文件进行排序。这可能吗?

编辑: 按照以下答案对文件夹内的文件进行排序后,当我通过 nautilus 查看时,它不会重新排列。我希望在通过 nautilus 查看时重新排列文件。

答案1

如果要根据大小对目录内的子目录/文件进行排序,请在终端中输入,

gsettings set org.gnome.nautilus.preferences default-sort-order "size"

要根据文件修改时间对子目录/文件进行排序,

gsettings set org.gnome.nautilus.preferences default-sort-order "mtime"

您还可以根据name和进行排序type。但您不能同时设置两个值,例如一个用于目录,另一个用于子目录。随时更改值都没有问题。更改将立即对所有目录生效。

您还可以按相反顺序排序sizenamemodification timetype。要在终端中执行此操作,请输入

gsettings set org.gnome.nautilus.preferences default-sort-in-reverse-order true

答案2

要根据大小对文件进行排序,您可以使用以下命令:

ls -Sl

按创建日期对结果进行排序稍微复杂一些。请参阅以下帖子:

答案3

打开终端并输入

du -sk * | sort -rn 

答案4

我认为如果没有循环就不可能实现 - 至少在 bash 中不可能 - 但是如果您愿意使用循环,这里有一个例子可以让你走上正确的轨道。

#!/bin/bash
for dir in $(du -sh */ | sort -rh | cut -f2); do
    echo "*** $(du -sh $dir) ***"
    ls -l --sort=time $dir
done

这个脚本……

  • 循环遍历所有条目du -sh,按大小排序 -cut仅格式化输出
  • 并且,对于每个条目,打印该目录的总大小(du -sh)并按大小排序列出其内容(ls -l --sort=time)。

相关内容