我有一个叫diff。txt的文件。我想看看它是不是空的。
我写了一个bash脚本,类似于下面,但我不能让它工作。
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
我有一个叫diff。txt的文件。我想看看它是不是空的。
我写了一个bash脚本,类似于下面,但我不能让它工作。
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
当前回答
[[ -f filename && ! -s filename ]] && echo "filename exists and is empty"
其他回答
拼写错误很烦人,不是吗?检查一下empty的拼写,然后试试这个:
#!/bin/bash -e
if [ -s diff.txt ]; then
# The file is not-empty.
rm -f empty.txt
touch full.txt
else
# The file is empty.
rm -f full.txt
touch empty.txt
fi
我非常喜欢shell脚本,但它的一个缺点是,当你拼写错误时,shell不能帮助你,而像c++编译器这样的编译器可以帮助你。
顺便注意一下,我交换了empty.txt和full.txt的角色,就像@Matthias建议的那样。
我来这里寻找如何删除空__init__.py文件,因为它们在Python 3.3+中是隐式的,最终使用:
find -depth '(' -type f -name __init__.py ')' -print0 |
while IFS= read -d '' -r file; do if [[ ! -s $file ]]; then rm $file; fi; done
同时(至少在zsh中)使用$path作为变量也会破坏你的$path env,因此它会破坏你的打开shell。不管怎样,我想分享一下!
[ -s file.name ] || echo "file is empty"
@geedoubleya的答案是我最喜欢的。
然而,我更喜欢这样
if [[ -f diff.txt && -s diff.txt ]]
then
rm -f empty.txt
touch full.txt
elif [[ -f diff.txt && ! -s diff.txt ]]
then
rm -f full.txt
touch empty.txt
else
echo "File diff.txt does not exist"
fi
[[ -f filename && ! -s filename ]] && echo "filename exists and is empty"