파일을 삭제하려면 스크립트가 필요합니다. 파일 이름을 지정했고 파일 크기가 지정된 크기보다 크면 삭제해야 하며 그렇지 않으면 아무 일도 일어나지 않습니다.
이런거 해봤는데 사이즈 비교가 잘 안되네요
se=$1
file1=$2 file2=$3
wc -c $2 $3
for file in $2 $3
do
fi [ $2 -gt $1]
then rm $1
fi
done
답변1
스크립트가 필요하지 않습니다. find
필요한 작업을 정확하게 수행하는 표준 명령줄 도구가 있습니다 . 예를 들어, /tmp
1GB보다 큰 모든 파일을 삭제하려면 먼저 안전을 위해 다음을 실행합니다.
find /tmp -size +1G
그런 다음 필요하지 않은 항목은 삭제하지 않을 것이라고 확신하면 다음을 수행하세요.
find /tmp -size +1G -delete
귀하의 질문에서 쉘 변수를 인용하지 않는다는 일반적인 실수를 범하므로 파일에 공백이 포함되어 있으면 바람직하지 않은 결과를 얻게 됩니다. 이는 이 find
명령과 자체 내부 명령을 사용하여 방지할 수 있습니다.-delete
평소와 마찬가지로 이 man
페이지에서는 이 매우 강력한 명령에 대한 완전한 문서를 제공합니다.
기본적으로 이 명령은 지정된 경로의 모든 하위 디렉터리에서 작동합니다. 작업을 제한하기 위해 옵션을 사용할 수 있습니다 -maxdepth
.
답변2
스크립트에 몇 가지 오류나 불일치가 있습니다.
- 일부 변수를 선언했지만 사용하지 않았습니다.
- 를 사용
wc -c $2 $3
하지만 결과를 변수에 할당하지 않으므로 결과가 터미널에만 인쇄되고 스크립트에서는 사용할 수 없습니다. - 당신이 썼어요
fi [ $2 -gt $1]
. 첫 번째 단어는if
, 아니오 여야 합니다fi
. 패턴은 입니다if [condition]; then [do something]; fi
. - 이 답변의 2번 항목으로 인해 을 써도
if [ $2 -gt $1]; then
파일 이름만 있으므로 크기를 비교하는$2
것이$1
아니라 이름을 비교하는 것입니다.
내 생각에는 우리가 스크립트를 작성하지 않고 문제를 해결해 주는 bash 스크립팅 튜토리얼을 시도해 보시는 것이 좋을 것 같습니다. 다음은 몇 가지 유용한 링크입니다:초보자를 위한 bash 스크립팅 튜토리얼그리고Bash 스크립팅 튜토리얼