디렉터리 이름이어야 하는 매개 변수를 사용하는 스크립트를 만들어야 합니다. 거기에서 모든 파일을 인쇄한 다음 가장 큰 파일과 크기를 인쇄해야 합니다. 도와주세요! 배열이 ls -l
도움이 될 수 있나요?
yourfilenames=`ls $1`
for eachfile in $yourfilenames
do
echo $eachfile
done
답변1
이 du
명령을 사용하여 특정 파일의 크기를 얻을 수 있습니다.
모든 파일의 출력을 얻은 다음 가장 큰 파일을 인쇄하려면 다음 명령을 사용할 수 있습니다.
find /path/to/yourDirectory/ -type f -exec du {} + | sort -rn | tee >(echo -e "\nThe largest one is: $(head -1)")
이 명령은 find /path/to/yourDirectory/ -type f -exec du {} +
크기를 가져옵니다파일만(하위 디렉토리는 크기 인쇄에 고려되지 않고 해당 파일만 고려됩니다.)
출력은 sort -nr
가장 큰 파일에서 가장 작은 파일로 정렬됩니다.
출력은 tee >(echo -e "\nThe largest one is: $(head -1)")
process 로 리디렉션되고 stdout
또한 process 로 리디렉션되므로 echo -e ...
리디렉션 $(head -1)
된 출력의 첫 번째 줄만 인쇄되며 이는 최대 파일 크기를 나타냅니다.
이것을 사용하여 인쇄하면 echo -e "\nThe largest one is: $(head -1)"
출력은 다음과 같습니다.
The largest one is: 736K ./path/to/yourdir/largestfilesize
위에서 볼 수 있듯이 치수는 경로 앞에 인쇄됩니다. 크기보다 먼저 경로를 얻으려면 다음을 사용할 수 있습니다.
find /path/to/yourDirectory/ -type f -exec du {} + | sort -rn | \
tee >(echo -e "\nThe largest one is: $(head -1 | awk -v OFS=' ' '{print $2,$1}')")
파일 크기를 알고 싶다면사람이 읽을 수 있는형식(4M, 5G, 3K 등)인 경우 해당 형식으로 인쇄하려면 올바른 옵션을 사용해야 합니다.
find /path/to/yourDirectory/ -type f -exec du -h {} + | sort -rh | \
tee >(echo -e "\nThe largest one is: $(head -1)")
#or
find /path/to/yourDirectory/ -type f -exec du -h {} + | sort -rh \
tee >(echo -e "\nThe largest one is: $(head -1 | awk -v OFS=' ' '{print $2,$1}')")
#du -h prints the file sizes in human readable format
#sort -h will sort the output comparing the human
#readable numbers (e.g., 4M,5G,3K, etc)