50KB보다 작은 텍스트 파일을 삭제하는 스크립트를 작성하는 방법을 찾으려고했지만 성공하지 못했습니다.x kb보다 작은 파일을 삭제하는 쉘 스크립트
내 시도는 다음과 같습니다
#!/bin/bash
for i in *.txt
do
if [ stat -c %s < 5 ]
then
rm $i
fi
done
내가 몇 가지 지침을 appriciate 것입니다, 감사합니다!
50KB보다 작은 텍스트 파일을 삭제하는 스크립트를 작성하는 방법을 찾으려고했지만 성공하지 못했습니다.x kb보다 작은 파일을 삭제하는 쉘 스크립트
내 시도는 다음과 같습니다
#!/bin/bash
for i in *.txt
do
if [ stat -c %s < 5 ]
then
rm $i
fi
done
내가 몇 가지 지침을 appriciate 것입니다, 감사합니다!
당신은 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
이 조각 확인하여 프로그램 조각을 작성하는 일반적으로 쉽게 그 대신 전체 프로그램을 작성하고하는 것보다 각 부분의 작동, 그것을 디버깅하십시오.
직접이의 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이었습니다. – whoan
'if'문에 닫는 'fi'문이 들어 있지 않습니다. – fedorqui
수퍼 유저의 [x 바이트보다 크거나 작은 파일을 찾으려면?] (http://superuser.com/q/204564/173513)을 참조하십시오. – jww