linux – 列出文件大小都在一个范围内的目录
发布时间:2020-12-31 05:35:01 所属栏目:Linux 来源:网络整理
导读:我想列出文件大小都在一个范围内的目录.我的解决方案是查看每个目录,如果它的所有文件大小在范围内,则显示出来.我想知道是否有更容易的方法来检查像find命令或任何其他命令这样的开关. 例如:范围= 10 – 20 dir1:f1 size=12f2 size= 19dir2:f3 size=22f4 si
|
我想列出文件大小都在一个范围内的目录.我的解决方案是查看每个目录,如果它的所有文件大小在范围内,则显示出来.我想知道是否有更容易的方法来检查像find命令或任何其他命令这样的开关. 例如:范围= 10 – 20 dir1: f1 size=12 f2 size= 19 dir2: f3 size=22 f4 size=11 OUTPUT = dir1 dir2被排除在外,因为f3超出10-20范围.不排除dir1,因为其所有文件的大小都在该范围内. 解决方法借用 4ae1e1评论的代码:在每个命令行指定的子目录中查找规则的第一个例外(如果有).打印,如果允许的话. dir_filesize_rangefilter() {
# args: lo hi paths...
# sizes in MiB
# return value: dir names printed to stdout
local lo=$1 hi=$2
shift 2 # "$@" is now just the paths
for dir; do # in "$@" is implicit
local safedir=$dir
[[ $dir = /* ]] || safedir=./$dir # make sure find doesn't treat weird -filenames as -options
# find the first file smaller than lo or larger than hi
[[ -z "$(find "$safedir" -type f
( -size "-${lo}M" -o -size "+${hi}M" )
-print -quit )"
]] && printf '%sn' "$dir"
done
}
我使用“printf”,因为如果其中一个目录名以-e或其他东西开头,则“echo”会中断.你可以将这个添加允许的目录添加到一个数组,而不是将它们打印到stdout,如果你真的想对有效的文件名感到偏执(因为你必须用一个IFS = read循环或者某些东西来解析它的输出允许任何字符,并且仍然在包含换行符的目录名称上中断.) 显然,SO的语法高亮不知道$(命令替换)中引号的引用规则:/ (编辑:张家口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
- 三星手机来电报号怎么取消 三星来电报号取消方法
- linux – 如何重命名内核模块名称而不重命名.ko传
- install keepalived on RedHat/CentOS to provid
- 在Linux中“Treason Uncloaked”是什么意思?
- podcast是什么意思,怎么用?
- C/C++库将PNG(包括Alpha)与原始ARGB缓冲区混合
- linux – Active Directory和OpenLDAP同步
- linux系统nginx php-fpm安装php memcache扩展
- Linux Shell脚本Ldd命令原理及使用方法介绍
- iPhone/iTouch/iPad升级和恢复iOS5.1.1教程
热点阅读


