如何在Bash中检查文件是否为空?

18 浏览
0 Comments

如何在Bash中检查文件是否为空?

我有一个名为diff.txt的文件。我想检查它是否为空。\n我写了一个类似下面的bash脚本,但是它无法正常工作。\n

if [ -s diff.txt ]
then
        touch empty.txt
        rm full.txt
else
        touch full.txt
        rm emtpy.txt
fi

0
0 Comments

在Bash中,我们经常需要检查文件是否为空。出现这个问题的原因是我们在处理文件时,需要确定文件是否包含任何内容,以便在后续的操作中做出相应的处理。下面是解决这个问题的方法:

方法一:使用[ -s file ]命令来检查文件大小是否大于0。如果文件大小大于0,则说明文件不为空。

方法二:使用[ -s diff.txt ] && echo "file has something" || echo "file is empty"命令来检查文件diff.txt是否为空。如果文件不为空,则输出"file has something";如果文件为空,则输出"file is empty"。

方法三:使用循环来检查当前目录下的所有*.txt文件是否为空,并报告所有为空的文件。具体命令如下:for file in *.txt; do if [ ! -s $file ]; then echo $file; fi; done

方法四:如果需要递归地检查所有*.txt文件是否为空,可以使用find命令。具体命令如下:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; done

以上就是在Bash中检查文件是否为空的方法。通过这些方法,我们可以方便地判断文件是否为空,并根据需要进行相应的处理。

0
0 Comments

如何在Bash中检查文件是否为空?

在Bash中,我们可以使用以下几种方法来检查文件是否为空:

方法一:使用[ -s file.name ]命令判断文件是否为空,如果为空则输出"file is empty"。

[ -s file.name ] || echo "file is empty"

方法二:使用[[ -s file.name ]]命令判断文件是否为空,如果不为空则输出"full",否则输出"empty"。

[[ -s file.name ]] && echo "full" || echo "empty"

方法三:使用[[ -s file.name ]]命令判断文件是否为空,如果为空则继续判断文件是否存在,如果存在则输出"empty",否则输出"does not exist"。

[[ -s file.name ]] || { [[ -f file.name ]] && echo 'empty' || echo 'does not exist'; }

需要注意的是,对于简单的检查,我们应该使用[ ... ]命令而不是[[ ... ]]命令。后者是Bash的特性,在不兼容的Bash检查(如正则表达式)中使用。如果你需要编写符合POSIX标准的Shell脚本(如Debian系统脚本),你会感谢养成这个习惯的。

以上就是如何在Bash中检查文件是否为空的方法。希望对你有所帮助!

0
0 Comments

如何在Bash中检查文件是否为空?

有时我们需要在Bash脚本中检查一个文件是否为空。这可能是为了执行特定的操作,比如删除或创建其他文件。下面是一种检查文件是否为空的方法:

#!/bin/bash -e
if [ -s diff.txt ]; then
        # 文件不为空
        rm -f empty.txt
        touch full.txt
else
        # 文件为空
        rm -f full.txt
        touch empty.txt
fi

上面的脚本首先使用`-s`选项来检查`diff.txt`文件是否为空。如果文件不为空,则删除`empty.txt`文件并创建`full.txt`文件;如果文件为空,则删除`full.txt`文件并创建`empty.txt`文件。

另外,可以使用`set -u`命令来检查文件是否为空:

empty=empty.txt
full=full.txt
diff=diff.txt
if [ -s ${diff?} ]; then
    r=${empty?}
    t=${full?}
else
    r=${full?}
    t=${empty?}
fi
rm ${r?}
touch ${t?}

以上脚本使用了`-s`选项来检查`diff.txt`文件是否为空。如果文件不为空,则将`empty.txt`赋值给`r`变量,将`full.txt`赋值给`t`变量;如果文件为空,则将`full.txt`赋值给`r`变量,将`empty.txt`赋值给`t`变量。然后,删除`r`变量指定的文件,并创建`t`变量指定的文件。

如果想要检查文件的存在性,可以对脚本进行相应的调整。

值得一提的是,使用工具`shellcheck`可以很好地找到拼写错误。

希望这篇文章能够帮助你在Bash中检查文件是否为空。

0