Centos7上删除包含超过给定字节数的文件的脚本

Centos7上删除包含超过给定字节数的文件的脚本

我需要一个删除文件的脚本。我给出了文件的名称,如果文件大小大于给定大小,则应将其删除,否则则不会发生任何情况。

我尝试过类似的方法,但我不知道如何比较尺寸

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其下所有大于 1 GB 的文件,首先为了安全起见,请运行:

find /tmp -size +1G

然后,一旦您确定不会删除任何不需要的内容:

find /tmp -size +1G -delete

请注意,在您的问题中,您犯了一个常见错误,即您没有引用 shell 变量,因此如果您的任何文件有嵌入空格,您将得到不受欢迎的结果。使用该find命令及其自己的内部-delete命令可以避免这种情况。

像往常一样,该man页面将为您提供这个非常强大的命令的完整文档。

请注意,默认情况下该命令对给定路径的所有子目录进行操作。为了限制操作,可以使用-maxdepth选项。

答案2

您的脚本中存在一些错误或不一致:

  1. 您声明了一些变量,但没有使用它们;
  2. 您使用wc -c $2 $3,但没有将结果分配给任何变量,因此结果仅打印在终端中,但不能在脚本中使用它。
  3. 你写了fi [ $2 -gt $1]。第一个词应该是if,不是fi。图案是if [condition]; then [do something]; fi
  4. 由于这个答案的第2点,即使你写了if [ $2 -gt $1]; then, ,里面$2$1只有文件名,所以你不是在比较它们的大小,而是在比较它们的名称。

我认为你应该尝试一些 bash 脚本教程,在这里我们不为你编写脚本,我们解决你的问题。这里有一些有用的链接:面向初学者的 bash 脚本编写教程和一个bash 脚本编写教程

相关内容