我正在尝试编写一个代码,该代码将在目录中打印超过min_size(比如说10G)的所有文件。问题是输出以下代码是所有文件,与min_size无关。我将获得其他细节,如mtime,所有者以及稍后的代码,但这部分本身不能正常工作,这里有什么不对吗?
#!/bin/sh
if (( $# <3 )); then
echo "$0 dirname min_size count"
exit 1
else
dirname="$1";
min_size="$2";
count="$3";
#shift 3
fi
tmpfile=$(mktemp /lawdump/pulkit/files.XXXXXX)
exec 3> "$tmpfile"
find "${dirname}" -type f -print0 2>&1 | grep -v "Permission denied" | xargs -0 -I {} echo "{}" > "$tmpfile"
for i in `cat tmpfile`
do
x="`du -ah $i | awk '{print $1}' | grep G | sort -nr -k 1`"
size=$(echo $x | sed 's/[A-Za-z]*//g')
if [ size > $min_size ];then
echo $size
fi
done
注意:我知道这可以通过find或du来完成,但我需要编写一个shell脚本来定期发送包含所有详细信息的电子邮件。