ls 和 find 命令排除某个目录

ls 和 find 命令排除某个目录

我想做这个:

ls -altrhS 'find / -type d \( ! -name tmp -prune \) -size +10000k 2> /dev/null -print' | egrep -v 'ibd|MYD|MYI'  

所以我想以这种格式列出特定大小的文件(不包括 tmp 目录)。我读过的所有内容都说应该这样做,但它不起作用,我也不断获取临时目录的内容。

答案1

尝试这个:

find / -not -path "*/tmp/*" -size +10000k -ls 2> /dev/null | \
sort -n -k7 | egrep -v 'ibd|MYD|MYI'

解释:

  • find / -not -path "*/tmp/*" -size +10000k -ls:查找路径不以/tmp/大于 10000k 开头的所有内容,并以find自己的ls -dils格式打印输出。
  • sort -n -k7:正如您在问题中的陈述ls -altrhS,我假设您希望输出按文件大小升序排序。第 7 个字段ls -dils的输出是find文件大小
  • egrep -v 'ibd|MYD|MYI'和你自己的egrep部分来过滤掉这些字符串

编辑:

如果您想要人类可读的文件大小格式,ls请使用以下命令:

find / -type f -not -path "*/tmp/*" -size +10000k -printf "%s %p\n" 2> /dev/null | sort -n -k1 | cut -d' ' -f2- | xargs -L 1 ls -lh

相关内容