这是针对另一个问题的:如何使用 robocopy 递归列出所有超过一定大小的文件?
我想解析命令的输出(或 cat 日志文件)并找到一个字符串值,将其转换为整数,然后查看该整数值是否大于给定的整数。
例如,给定以下行:
*EXTRA File 78223 C:\_Google.Enterprise.Contract.2010-06-01.pdf
我想比较“78223”和“10485760”。使用 grep 或 sed 可以实现吗?
谢谢!
答案1
使用awk
方法如下:
$ echo '*EXTRA File 78223 C:\foo.pdf' | awk '$3 > 1048576 {print $0;}'
$ echo '*EXTRA File 78223 C:\foo.pdf' | awk '$3 > 40000 {print $0;}'
*EXTRA File 78223 C:\foo.pdf
答案2
另外 - 如果您使用的是类 Unix 用户空间(例如,如果您使用的是 Windows,则为 UnxUtils 或 Cygwin),您可以使用find
参数-size
直接获取文件列表,然后通过管道传输到 xargs 并对选定的文件执行任何您想要执行的操作。
对您的问题(有趣的比较和其他操作)的一般答案确实是 awk 或 bash(带有 bc)或 perl - 但具体场景适合find
。
答案3
在纯 Bash 中:
while read -r _ _ size _; do ((size > 10485760)) && echo "hit"; done < foo.log
答案4
Perl 的使用方式与 awk 类似:
echo '*EXTRA File 78223 C:\foo.pdf' | perl -ane 'print if $F[2] > 40000'