对目录的输出进行排序

对目录的输出进行排序

如何在桌面上创建一个名为 Option1.txt 的新文件。此文件应包含我的“主”目录的内容。我该如何输出:

  • 按条目扩展名的字母顺序排序。
  • 包括所有隐藏文件和文件夹。
  • 以人类可读的格式显示所有文件的大小

答案1

ls -alXh > Option1.txt

man ls也会有帮助... ;)

答案2

ls -ahlX ~|awk '{printf "%-20s %-40s\n",$9,$5 }'>~/Desktop/Option1.txt

按条目扩展名的字母顺序排序。(Using ls -X

包括所有隐藏文件和文件夹。(使用ls -a

以人类可读的格式显示所有文件的大小(使用ls -lh

awk '{print $9,$5 }仅打印文件和目录的名称和大小

最后存入Option.txt。

%-20s %-40s\n用于格式化列 正如@Glenn Jackman 在评论中指出的那样,如果目录名中有空格,这将不会打印完整的目录名。

所以,

另一个选择是(来源

ls -ahlX ~|gawk -F':[0-9]* ' '/:/{print $2}'>~/Desktop/Option1.txt

即使有空格,这个也会打印文件名。

但解析 ls 始终是一个坏主意。

答案3

解析输出ls从来都不是一个好主意。我的方法是使用du列出每个文件的磁盘使用情况,并--mad-depth选择仅列出当前目录(因为du是递归的),然后sort根据第二个字段设置命令组织输出。

 du --all --max-depth 1 --human-readable | sort --key=2

将其重定向到文件很简单du --all --max-depth 1 --human-readable | sort --key=2 > outputFileName.txt

您可能还对 提供的更详细信息感兴趣du。请参阅我的另一个使用find和的答案du(尽管可能需要修改以包含| sort部分 ):命令“ls”显示目录大小而不是块大小

相关内容