디렉토리에 필요한 총 파일 수를 표시하기 위해 이 스크립트를 실행해 보았지만 작동하지 않습니다.
echo "please enter your directory: "
Read directory
Echo -e "Please enter your project name: "
Read projName
find $directory -type f -name ' $projName ' -exec du -ch {} + | while read file; do
echo "Reading $file"
Echo $file | grew total$
답변1
"쓸모없다"는 게 무슨 뜻인가요?
스크립트와 관련된 몇 가지 문제는 다음과 같습니다.
원래
#!/bin/bash
echo "Please enter directory: "
read directory
echo -e "Please enter project name: "
read projName
find $directory -type f -name ' $projName ' -exec du -ch {} + | while read file; do
echo "Reading $FILE..."
echo $FILE | grep total$
done
고쳐 쓰다
#! /bin/bash -
read -p "Please enter a directory: " directory # Shorter
read -p "Please enter a project name: " projName # Shorter
find "$directory" -type f -name "$projName" | while read file; do #Always double quote your variables. The single quotes around projName prevented it from being expanded.
echo "Reading $file..." # $FILE is not a valid variable in your script
du -ch "$file" # this being in an exec statement was feeding bad info to your while loop.
cat "$file" | grep 'total$' # $FILE is not a valid variable in your script. I think you want to cat the contents of the file and not echo it's filename.
done
답변2
디렉토리의 전체 크기를 나열하려는 경우:
du -c
마지막에 "총" 숫자(바이트 단위)가 제공됩니다.
du -ck
마지막에 "총" 숫자를 킬로바이트 단위(대략)로 제공합니다.
노트: 위의 모든 내용은 각 파일의 파일 크기와 전체 크기를 제공합니다. 각 파일 크기를 원하지 않으면 다음을 사용하십시오.-s
du -sk
(대략) 킬로바이트 단위의 "총" 숫자만 제공합니다.
답변3
find <pathtodirectory> -name '$projName' -exec du -ch '{}' \; | awk '/total/ { tot=+$1 } $0 !~ "total" { print "Reading "$2"...\n" } END { print "Space "tot"\n"}'
출력을 구문 분석하려면 awk를 사용하십시오. 텍스트에 텍스트 합계가 포함되어 있으면 합계를 공백으로 구분된 두 번째 필드로 설정하고, 그렇지 않으면 파일 이름을 첫 번째로 구분된 부분으로 설정합니다. 마지막으로 원하는 형식으로 데이터를 인쇄합니다.