Jason Hunter Asked: 2023-10-22 07:18:21 +0800 CST2023-10-22 07:18:21 +0800 CST 2023-10-22 07:18:21 +0800 CST 如何限制 ag 搜索的文件的大小? 772 我不希望ag搜索大于 2Mio 的文件。 我找不到像 ag 命令的 --file-size 标志这样的东西,但是有什么方法可以告诉它吗? 我得到很多 ERR: Skipping foo.bar: pcre_exec() can't handle files larger than 2147483647 bytes. ag 2 个回答 Voted Best Answer Stéphane Chazelas 2023-10-22T17:34:08+08:002023-10-22T17:34:08+08:00 如果将zsh, 与任何命令一起使用,而不仅仅是ag,您可以执行以下操作: ag -- pattern **/*(.LM-3) 要查看(递归地**/)常规文件 ( .) 大小为 2 MiBL或更小的文件(其L长度四舍五入为整数Mebibytes,严格小于 ( -) 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 bxm 2023-10-22T07:48:16+08:002023-10-22T07:48:16+08:00 您可以对 2GiB 及以上的文件进行预扫描,并将它们写入.ignore您正在搜索的目录结构中。 例如 find . -size "+$(( 2 * 1024 * 1024 * 1024 - 1 ))c" > .ignore 警告适用于路径中包含换行符、通配符、反斜杠、引号或尾随空格等棘手字符的文件。 对于严格大于 2MiB 的文件,使用包括findGNU 在内的某些实现find,您可以使用find . -size +2M,它匹配大小向上舍入到整数兆字节且严格大于 2 的文件,因此文件大小为 2097153(向上舍入到 3MiB)及以上。请注意,-size -2M报告的文件大小为 1MiB 或更小。
如果将
zsh
, 与任何命令一起使用,而不仅仅是ag
,您可以执行以下操作:要查看(递归地
**/
)常规文件 (.
) 大小为 2 MiBL
或更小的文件(其L
长度四舍五入为整数M
ebibytes,严格小于 (-
)3
)。这会排除隐藏文件,但在 的情况下
ag
,与 files 和 co 匹配的文件.ignore
在按字面传递时不会被排除。在 GNU 系统上的 bash 或其他类似 Korn 的 shell 中,您始终可以使用执行以下操作的函数或脚本:
执行等效操作(文件列表未排序,但
ag
默认情况下不会再次对文件列表进行排序,如果您想要排序列表,您始终可以通过find
管道将输出传递到)。sort -z
您可以对 2GiB 及以上的文件进行预扫描,并将它们写入
.ignore
您正在搜索的目录结构中。例如
警告适用于路径中包含换行符、通配符、反斜杠、引号或尾随空格等棘手字符的文件。
对于严格大于 2MiB 的文件,使用包括
find
GNU 在内的某些实现find
,您可以使用find . -size +2M
,它匹配大小向上舍入到整数兆字节且严格大于 2 的文件,因此文件大小为 2097153(向上舍入到 3MiB)及以上。请注意,-size -2M
报告的文件大小为 1MiB 或更小。