用于删除小于x kb的文件的Shell脚本

Szy*_*zki 3 linux bash shell scripting file

我试图找出如何编写一个小脚本来删除小于50千字节的文本文件,但我没有成功.

我的尝试看起来像这样:

#!/bin/bash
for i in *.txt
do
   if [ stat -c %s < 5 ]
   then
     rm $i
   fi
done
Run Code Online (Sandbox Code Playgroud)

我会赞美一些指导,谢谢!

fed*_*qui 10

您可以直接使用findsize选项:

find /your/path -name "*.txt" -size -50k -delete
                              ^^^^^^^^^^
                              if you wanted bigger than 50k, you'd say +50
Run Code Online (Sandbox Code Playgroud)

您可能希望坚持当前目录中的文件,而不是在目录结构中.如果是这样,你可以说:

find /your/path -maxdepth 1 -name "*.txt" -size -50k -delete
Run Code Online (Sandbox Code Playgroud)

来自man find:

-size n [cwbkMG]

文件使用n个空格单位.可以使用以下后缀:

'b'表示512字节块(如果没有使用后缀,这是默认值)

'c'表示字节

两个字节的单词'w'

Kilobytes的'k'(1024字节单位)

'M'表示兆字节(单位为1048576字节)

千兆字节'G'(单位1073741824字节)