linux - 查找条件的文件大小

标签 linux shell

我正在尝试编写条件语句,以便如果文件大于 1GB,它会在文件中打印该文件的名称,并跳过处理它。

#!/bin/bash
for f in *.dmp
do
    if [ ! $(stat -c %s $f > 1000000000) ]; then
        name=`basename ${f%.dmp}`
        if [ -f ../tshark/$name.dat ]; then
            echo "file exists, moving on...";
        else
            echo "Processing" $name;
            tshark -PVx -r "$f" > ../tshark/$name.dat;
            echo $name "complete, moving on...";
        fi
    else
        echo $f "too large";
        echo $f "\n" > tooLarge.txt;
    fi
done

问题是! $(stat -c %s $f > 1000000000) 不工作。

如果有任何建议,我将不胜感激。

最佳答案

所以,如果您还没有看到 Advanced Bash Scripting Guide , 你应该。是的,它以 Bash 为中心,但对于像这种有条件的事情,它也是一个很好的引用。

现在,您编写的内容会尝试执行 stat -c %s $f > 1000000000作为命令(它位于 $() 构造的括号内,据我所知,它相当于旧的反引号。你想要的是 $(stat -c %s $f) -le 1000000000 执行 stat -c %s $f 然后检查它是否小于或等于到 1000000000 。这(即 a<=b )在逻辑上是 !(a>b)equivalent

关于linux - 查找条件的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322187/

相关文章:

linux - shell脚本这行代码是什么意思

linux - 如何在 shell 中保留 $

linux - bash 脚本 : how to find the absolute path of "symlink/.."?

bash - 如何正确识别/传递 bash 参数

linux - 期望登录后运行 shell 命令

C++ Linux : Process PID from its path

c++ - 访问配置目录的跨平台方式

linux - 固件 : failed to load iwlwifi-8000C-25/26. ucode (-2)

linux - perl sdl 模块安装失败

linux - 通过 SSH 通过 STDIN 将指示器从 Bash 传回 Perl