我不想要股份公司搜索大于 2Mio 的文件。
我找不到像 ag 命令的 --file-size 标志这样的东西,但是有什么方法可以告诉它吗?
我得到很多
ERR: Skipping foo.bar: pcre_exec() can't handle files larger than 2147483647 bytes.
答案1
如果将zsh
, 与任何命令一起使用,而不仅仅是ag
,您可以执行以下操作:
ag -- pattern **/*(.LM-3)
要查看(递归地**/
)常规文件 ( .
) 大小为 2 MiBL
或更小的文件(其L
长度四舍五入为整数M
ebi 字节,严格小于 ( -
) 3
)。
这会排除隐藏文件,但在 的情况下ag
,与 files 和 co 匹配的文件.ignore
在按字面传递时不会被排除。
在 GNU 系统上的 bash 或其他类似 Korn 的 shell 中,您始终可以使用执行以下操作的函数或脚本:
ag_in_small_non_hidden_files() {
xargs -r0a <(
LC_ALL=C find . -name '.?*' -prune -o -type f -size -3M -print0
) ag "$@"
}
执行等效操作(文件列表未排序,但ag
默认情况下不会再次对文件列表进行排序,如果您想要排序列表,您始终可以通过管道将find
输出传递到)。sort -z
答案2
您可以对 2GiB 及以上的文件进行预扫描,并将它们写入.ignore
您正在搜索的目录结构中。
例如
find . -size "+$(( 2 * 1024 * 1024 * 1024 - 1 ))c" > .ignore
警告适用于路径中包含换行符、通配符、反斜杠、引号或尾随空格等棘手字符的文件。
对于严格大于 2MiB 的文件,使用find
包括 GNU 在内的某些实现find
,您可以使用find . -size +2M
,它匹配大小向上舍入到整数兆字节且严格大于 2 的文件,因此文件大小为 2097153(向上舍入到 3MiB)及以上。请注意,-size -2M
报告的文件大小为 1MiB 或更小。