디렉토리의 모든 파일에 대해 "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

당신은 일을 지나치게 복잡하게 만들고 있습니다. Giles가 의견에서 지적했듯이:

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

관련 정보