我知道如何使用以下命令列出并计算根文件夹中所有常规文件的数量:
find . -type l | wc -l
但是我想知道从哪里开始才能找到整个目录中最大的文件。我看过一些关于du
命令的东西,但我们还没有学习过它,所以在我们已经学过的东西中,我认为我们需要以某种方式将其与ls -t
命令连接起来。
如果我的术语不正确,请原谅,我还在适应中!
find . -type l | wc -l
但是我想知道从哪里开始才能找到整个目录中最大的文件。我看过一些关于du
命令的东西,但我们还没有学习过它,所以在我们已经学过的东西中,我认为我们需要以某种方式将其与ls -t
命令连接起来。
如果我的术语不正确,请原谅,我还在适应中!
引用自这个链接:
如果你想在特定目录及其子目录中查找并打印出前10个最大的文件名称(不包括目录),可以使用以下命令:
$ find . -type f -printf '%s %p\n'|sort -nr|head
要限制搜索到当前目录,请使用“-maxdepth 1”选项结合find命令:
$ find . -maxdepth 1 -printf '%s %p\n'|sort -nr|head
如果您想打印出前10个最大的“文件和目录”,可以使用以下命令:
$ du -a . | sort -nr | head
** 在上述所有示例中,使用“head -n X”而不是只使用“head”来打印前X个最大的文件。
du -am . | sort -nr | grep '\..*\.' | head
。这里的 m
是用来以 MB 显示文件大小,并且使用 grep
来显示至少有两个点的行,第一个点在路径中的 ./
,第二个点则在文件扩展名中,例如 .mov
。 - psmith查找当前目录及其子目录中的前25个文件:
find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25
此命令将按照文件大小进行排序并输出前25个文件,使用了 "sort -nr -k5" 命令。
如果需要以人类可读的文件大小显示:
find . -type f -exec ls -alh {} \; | sort -hr -k5 | head -n 25
在Linux/UNIX/BSD文件系统中,没有一个简单的命令可以查找最大的文件/目录。然而,通过以下三个命令的组合(使用管道),您可以轻松地找出最大文件的列表:
# du -a /var | sort -n -r | head -n 10
如果您想要更易读的输出,请尝试:
$ cd /path/to/some/var
$ du -hsx * | sort -rh | head -10
在这里,
find . -type f | xargs ls -lS | head -n 1
输出
-rw-r--r-- 1 nneonneo staff 9274991 Apr 11 02:29 ./devel/misc/test.out
如果你只想要文件名:
find . -type f | xargs ls -1S | head -n 1
这样可以避免使用 awk
,并允许您在 ls
中使用任何标志。
注意。由于xargs
试图避免构建过长的命令行,如果您在包含大量文件的目录上运行它,则可能会失败,因为ls
最终会执行多次。这不是无法克服的问题(您可以收集每个ls
调用的head -n 1
输出,并再次运行ls -S
,循环直到只剩一个文件),但它确实使这种方法受到影响。
xargs
,我忽略了你 +1。 - Stevefind . -type f -print0 | xargs -0 ls -lS | head -n 1
。 - rymoxargs
执行的第一批中找到最大的文件。为了修复它,请添加排序功能: find . -type f -print0 | xargs -0 ls -lS | sort -rk 5 | head -n 10
。对我而言,在OSX上工作正常。 - psmith这个命令会递归地列出普通文件,并按照第七个字段(在我的find
输出中是文件大小,请检查你的输出)进行排序,然后只显示第一个文件。
find . -type f -ls | sort +7 | head -1
find
的第一个选项是递归搜索的起始路径。 f
类型的搜索普通文件。请注意,如果您尝试将其解析为文件名,则可能会失败,如果文件名包含空格、换行符或其他特殊字符。 sort
的选项也因操作系统而异。我正在使用FreeBSD。find
遍历目录,但也许使用stat
获取有关文件的详细信息,然后再使用awk
查找最大的大小。请注意,stat
的输出也取决于您的操作系统。[+POS1] [-POS2]
表示法只是旧版本的一种表示方法。据我所知,现代GNU sort仍然支持这种表示法,尽管现在看来,在5.1版本左右的sort man页面中已经删除了它。您可以在FreeBSD 4.11的sort man页面中看到它。我想自从FreeBSD 5.0发布之前,我就没有阅读过sort的man页面了! - ghotifind . -type f -ls | sort -nk 7 | head -1
- Parapluie这将查找您当前工作目录中最大的文件或文件夹:
ls -S /path/to/folder | head -1
查找所有子目录中最大的文件:
find /path/to/folder -type f -exec ls -s {} \; | sort -nr | awk 'NR==1 { $1=""; sub(/^ /, ""); print }'
ls
的默认行为。在我的测试中,-S
标志将每行列出一个文件。我已经纠正了第二个命令。希望现在它是完美无缺的。谢谢。 - Stevefind . -type f -ls|sort -nr -k7|awk 'NR==1{print $7,$11}' #formatted
或者
find . -type f -ls | sort -nrk7 | head -1 #unformatted
因为这里发布的其他内容都没有起作用。
这将在$PWD
和子目录中找到最大的文件。
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
因此,在您的rc文件中拥有这些别名非常有用:
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
尝试使用以下命令:
find /your/path -printf "%k %p\n" | sort -g -k 1,1 | awk '{if($1 > 500000) print $1/1024 "MB" " " $2 }' |tail -n 1
这将打印出文件名和大小最大的文件,且大小超过500M。您可以移动 if($1 > 500000)
,它会打印出目录中最大的文件。
ls -sh /pathFolder | sort -rh | head -n 1
ls -sh
的输出是文件大小的可读形式,包括大小 s
和人类可读的 h
。您可以使用 ls -shS /pathFolder | head -n 1
命令。来自 ls
的更大的 S
已经将列表从大文件排序到小文件,但第一个结果是该文件夹中所有文件的总和。因此,如果您只想列出更大的文件,即一个文件,则需要使用 head -n 2
并检查“第二行结果”,或者使用带有 ls sort head
的第一个示例。
man
加上你感兴趣的命令。会弹出一个很好的该命令的手册条目(按q
返回命令行)。 - Dunes