找到目录中最大的文件并将文件名设置在变量中

找到目录中最大的文件并将文件名设置在变量中

我想找到指定目录中最大的文件,并将答案放入变量中。

通过使用:

find . -type f -printf "%s\t%p\n" | sort -n | tail -1 it

它将找到最大的文件,但它会递归扫描所有子目录。

如何让它只扫描指定的目录?

如何将文件名放入变量中? ($var1)?

答案1

要将搜索限制为当前目录,请使用-maxdepth 1

$ find . -maxdepth 1 -type f -printf "%s\t%p\n" | sort -n | tail -1
5359532 ./coreutils_8.30.orig.tar.xz

$ var1="$(basename $(find . -maxdepth 1 -type f  -printf "%s\t%p\n" | sort -n | tail -1 | awk '{print $NF}'))"
$ echo "$var1"
coreutils_8.30.orig.tar.xz

答案2

我会尝试

#!/bin/bash 
biggest=$(ls -S -1 /specified/directory/ | head -n1) 
echo $biggest

$曼LS

-S     sort by file size, largest first
-1     list one file per line

$男人头

-n     print the first NUM lines

要在变量中包含完整路径,请尝试

ls -S -1 -d /specified/directory/* | head -n1

但是,那曼LS不清楚

-d      list directories themselves, not their contents

答案3

尽管您标记了问题bash,但 ifzsh是一个选项:

print -rv var1 *(.OL)

相关内容