2015-01-05 1 views
3

50KB보다 작은 텍스트 파일을 삭제하는 스크립트를 작성하는 방법을 찾으려고했지만 성공하지 못했습니다.x kb보다 작은 파일을 삭제하는 쉘 스크립트

내 시도는 다음과 같습니다

#!/bin/bash 
for i in *.txt 
do 
    if [ stat -c %s < 5 ] 
    then 
    rm $i 
    fi 
done 

내가 몇 가지 지침을 appriciate 것입니다, 감사합니다!

+0

'if'문에 닫는 'fi'문이 들어 있지 않습니다. – fedorqui

+0

수퍼 유저의 [x 바이트보다 크거나 작은 파일을 찾으려면?] (http://superuser.com/q/204564/173513)을 참조하십시오. – jww

답변

3

당신은 fedorqui의 버전을 사용해야하지만, 참조 :

#!/bin/bash 
for i in ./*.txt # ./ avoids some edge cases when files start with dashes 
do 
    # $(..) can be used to get the output of a command 
    # use -le, not <, for comparing numbers 
    # 5 != 50k 
    if [ "$(stat -c %s "$i")" -le 50000 ] 
    then 
    rm "$i" # specify the file to delete  
    fi # end the if statement 
done 

이 조각 확인하여 프로그램 조각을 작성하는 일반적으로 쉽게 그 대신 전체 프로그램을 작성하고하는 것보다 각 부분의 작동, 그것을 디버깅하십시오.

10

직접이의 size 옵션 find을 사용할 수 있습니다

find /your/path -name "*.txt" -size -50k -delete 
           ^^^^^^^^^^ 
           if you wanted bigger than 50k, you'd say +50 

당신은 디렉토리 구조에서 아래로 이동하지 않고, 현재 디렉토리에있는 파일에 충실 할 수 있습니다. 그렇다면, 당신은 말할 수 :

find /your/path -maxdepth 1 -name "*.txt" -size -50k -delete 

man find에서 :

-size N [cwbkMG]

파일 공간의 n 개의 단위를 사용합니다. 다음 기호가 사용될 수있다 :

'B'를 512 바이트 블록 'w'

바이트

위한

'C'(이 접미사를 사용하지 않으면 기본값) 두 바이트 즉

킬로바이트

'K'(1024 바이트 단위)

'M'메가 바이트 (1048576 바이트 단위) 기가 바이트

'G'대 (1,073,741,824 바이트 단위)

+1

빠른 +1이었습니다. – whoan

관련 문제