我有一些目录,例如/ ice / cream包含一些我想要排序的文件,然后在最大的文件中找到一个最小值;但是我想从父目录/ ice中做到这一点。
我写的bash行只能在/ ice / cream中使用,我想从/ ice开始工作,我试过
awk 'BEGIN {min = 0} {if($7<min) min=$7} END {print min}' $(ls -lS cream/ | head -n 2 | awk '{print $9}')
这不起作用,因为awk不知道第二个$()函数找到的文件的路径;请帮忙!干杯
答案 0 :(得分:1)
获取最大文件的更安全的方法;对stat
的调用可能会因您的实施而异:
max_file () {
local max_size size
max_size=0
for f in "$1"/*; do
size=$(stat -c %s "$f")
if (( size > max_size )); then
max_file="$f"
max_size="$size"
fi
done
echo "$max_file"
}
awk '...' "$(biggest_file cream/)"
答案 1 :(得分:0)
您的ls
管道太复杂了,在dir /之后需要*
来获取相对名称输出:
awk 'BEGIN {min = 0} {if($7<min) min=$7} END {print min}' $(ls -S cream/* | head -1)
答案 2 :(得分:0)
正如@Etan Reisner在评论中首先回答的那样,该线路缺少了*;工作代码是:
awk 'BEGIN {min = 0} {if($7<min) min=$7} END {print min}' $(ls -lS cream/* | head -n 1 | awk '{print $9}')
谢谢。