求助:如何递归查找目录中>100M的非.gz文件并排序输出
问题分析与解决
你的命令问题出在第二个find命令上:第一个find筛选出符合条件的文件路径后,管道传给第二个find,但find默认不会读取标准输入的路径来处理,而是重新从当前目录开始全局搜索,相当于完全忽略了前面的筛选条件,所以才会再次出现.gz文件。
正确命令写法
直接让第一个find完成筛选+格式化输出,再排序取最大的几个:
find . -type f -size +100M ! -name "*.gz" -printf '%s %p\n' | sort -nr | head
如果要把结果保存到文本文件,加个重定向即可:
find . -type f -size +100M ! -name "*.gz" -printf '%s %p\n' | sort -nr | head > large_files.txt
命令解释
-printf '%s %p\n':让find直接输出文件大小(字节数)和完整路径,一步到位sort -nr:按数字逆序排序(最大的文件排在前面)head:默认取前10个最大的文件,你可以加-n N指定取前N个,比如head -n 5
内容的提问来源于stack exchange,提问作者curious
相关产品推荐
相关产品推荐

