#!/bin/bash
oldIFS=$IFS
IFS=$'\n'
for i in ` du -a $1 | sort -rn`; do
echo $i;
filename=`echo $i| awk '{print $2}' `;
if [ -f filename ] ; then echo $filename; IFS=$oldIFS;exit 0;fi
done
IFS=$oldIFS
IFS
增强for循环时按照空白切割,会使得打印时文件大小和文件名不在一行
IFS这个环境变量存储了 空白、制表符、换行符
IFS=$'\n' 将IFS环境变量变成只存储换行符,即增强for循环时只按换行符切割
:$'\n' 取换行符对应的阿斯克码值,不能直接\n,否则会按照\和n进行切割,$表示取对应的阿斯克码值
du -a 路径
读取该路径下的所有文件
for i in ` du -a $1 | sort -rn`; 表示将所给路径下的文件按照文件大小逆序排列的结果,给增强for循环读取
将读取到的每一行作为输出,输入到awk中来读取,awk默认按空白分隔,将第二列的内容作为结果,赋值给filename变量
filename=`echo $i| awk '{print $2}' `;
条件表达式
if [ -f filename ] ; -f表示对是不是文件夹的判断
IFS=$oldIFS
表示在结束后,将环境变量修改为原来的值