You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在服务器上递归生成含所有者、路径及大小的可过滤文件列表?

生成可过滤的服务器文件存储统计列表

用find命令生成结构化输出(推荐)

find是递归遍历目录的最佳工具,配合-printf参数可以精准控制输出字段,完美匹配你需要的四列信息:

find /你要监控的目录 -type f -printf "%u\t%f\t%h\t%s\n" > filelist.txt

各字段说明:

  • %u:文件所有者的用户名
  • %f:仅文件名(不含路径)
  • %h:文件所在的完整目录路径
  • %s:文件大小(单位:字节)
  • \t:用制表符分隔字段,方便后续用表格工具、awk或sort做过滤/排序

如果需要人类可读的大小格式(如KB/MB/GB),可以结合du命令实现:

find /你要监控的目录 -type f -exec du -h {} + | while read size path; do
    user=$(stat -c "%U" "$path")
    filename=$(basename "$path")
    dir=$(dirname "$path")
    echo -e "$user\t$filename\t$dir\t$size"
done > filelist.txt

用stat配合shell递归匹配

如果你的shell支持**递归通配(比如bash需先执行shopt -s globstar开启),可以直接用stat批量输出:

shopt -s globstar
stat -c "%U %n %s" /你要监控的目录/**/* | awk '{
    user = $1
    size = $NF
    path = substr($0, index($0, $2), length($0) - length(user) - length(size) - 2)
    filename = gensub(".*/", "", 1, path)
    dir = gensub("/[^/]+$", "", 1, path)
    print user "\t" filename "\t" dir "\t" size
}' > filelist.txt

常用过滤与统计操作

生成制表符分隔的文件后,可快速完成这些操作:

  • 按文件大小排序(字节格式):sort -k4 -n filelist.txt
  • 按人类可读大小排序:sort -k4 -h filelist.txt
  • 筛选特定用户的文件:awk '$1 == "your_username"' filelist.txt
  • 统计某目录下所有文件的总大小:awk '$3 == "/target/dir" {sum+=$4} END {print sum " bytes"}' filelist.txt

内容的提问来源于stack exchange,提问作者user2355903

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:36:06