大数据全系列 教程
1869个小节阅读:465k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
##13.3 金山
问题1:根据用户给定的目录,输出该目录(包含其子级目录)下文件大小最大的文件。需要考虑递归子目录。
提示:$IFS默认是空格,制表符和换行符,IFS=$'\n' 使用$获取\n换行符的ascii码作为IFS的值,此时分隔符就是换行符了。
参考答案
思路:使用du命令加-a遍历用户指定目录($1获取)的所有文件,使用管道将结果传递给sort,让sort使用数值序倒序排序,依次输出各个条目。
xxxxxxxxxx
# !/bin/bash
oldIFS=$IFS
IFS=$'\n'
# 将for循环获取不同元素的标记修改为换行符
# for循环获取元素的时候使用空格区分各个不同的元素
for item in `du -a $1 | sort -nr`
do
echo $item
done
IFS=$oldIFS
#用完后重置IFS变量的值。
因为要获取最大的文件,需要改进
xxxxxxxxxx
#!/bin/bash
oldIFS=$IFS
IFS=$'\n'
# 将for循环获取不同元素的标记修改为换行符
# for循环获取元素的时候使用空格区分各个不同的元素
for item in `du -a $1 | sort -nr`
do
fileName=`echo $item | awk '{print $2}'`
if [ -f $fileName ]; then
echo $fileName
break
fi
done
IFS=$oldIFS
#用完后重置IFS变量的值。