如何编写一个为目录中的每个文件运行“du -sh”的脚本?

如何编写一个为目录中的每个文件运行“du -sh”的脚本?

我的组织有一个专用于用户文件的网络共享。每个用户都有自己的目录。我试图找出谁使用了最多的共享空间。我当前的代码如下所示

#!/bin/bash

#Author= x
#Date= 04/28/23
#Desc= x

# Defining the directory
directory="/path/to/directory"

# Creating array to hold the file names
files=()

# Loop through each file in the directory
for file in "$directory"/*; do
  # Add the file name to the array
  files+=("$file")
done

# Use du to get the size of each file and sort the results by size
du -sh "${files[@]}" | sort -h > output.txt

运行脚本时,我收到“du:无法访问'$file':没有这样的文件或目录。”我对脚本编写相当陌生,并且意识到这个问题与我定义变量的方式有关,但不确定要更改什么。

答案1

你把事情想得太复杂了。正如吉尔斯在评论中指出的那样:

du -sh /path/to/directory/* | sort -h

相关内容