Shell脚本以递归方式列出dir中的文件,这是巨大的。我正在使用:
find <path> -mtime +20 -exec ls -ls {} \; | sort -n -r | head -100 | awk '{print $10}'
的问题:
有没有更好的方法来实现这一目标?我试过了:
du <path> | sort -n -r | head -n 100
快得多但不那么有效。
答案 0 :(得分:1)
根据您find
找到的文件的大小分布,您可能会考虑使用-size
谓词清除大量较小的鱼,然后将列表转储到sort
}。如果这是您定期运行的内容,请在开始从head
获得少于100行时进行记录,并将其用作表示是时候降低您提供find
的大小限制的时间。
如果没有获得对相关目录的权限更改或升级您的权限以便您可以阅读权限,那么您将无法解决权限问题。
答案 1 :(得分:1)
du
几乎就在那里,试试
du -aS | sort -n -r | head -n 100
只返回不包含任何目录的大文件
答案 2 :(得分:1)
find有一个方便的-printf指令:
find . -type f -printf "%s\t%p\n" | sort -nr | head -n 100
答案 3 :(得分:0)
find -size + k -atime + -printf“%s,\ t%a,\ t%p \ n”| sort -nr
将为您提供所需的输出
这里sike在kb上,年龄是最后一次访问时间。