我需要一个删除文件的脚本。我给出了文件的名称,如果文件大小大于给定大小,则应将其删除,否则则不会发生任何情况。
我尝试过类似的方法,但我不知道如何比较尺寸
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
您的脚本中存在一些错误或不一致:
- 您声明了一些变量,但没有使用它们;
- 您使用
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 脚本编写教程