我正在做一个脚本来执行以下操作:
在这个脚本中,我需要显示最大文件的名称和大小,从最小的文件中显示,从我给脚本的路径,如下所示: “ ./ lsMinMax / etc / home / lib ”
当我尝试仅剪切名称和大小时,我的问题开始了。我有这样的事情: drwxr-s --- 2 root dip 4096 feb 2 15:13 chatsripts 。我尝试使用空格作为限制器来剪切它但是在/ etc的情况下我得到了名字,在/ home我得到了日期。
这就是我现在所拥有的(现在我不使用剪切,我尝试使用awk): script
这是我的输出:
我希望你能帮助我。抱歉我的英文。
答案 0 :(得分:1)
正如Shane暗示的那样,don't parse ls
。使用stat
查询文件和大小。然后我使用awk
来解析stat
输出并确定最大和最小:
#!/bin/sh
lsMinMax () (
cd "$1"
echo "ruta: $1"
stat -c "%s/%n" * | awk -F/ '
NR == 1 { min = max = $1; minf = maxf = $2 }
$1 < min { min = $1; minf = $2 }
$1 > max { max = $1; minf = $2 }
END {
printf " Mayor fichero: %s (%d bytes)\n", maxf, max
printf " Menor fichero: %s (%d bytes)\n", minf, min
}
'
)
for dir do
lsMinMax "$dir"
done
答案 1 :(得分:0)