Diff.txtというファイルがあります。空かどうか確認したいこのようなことをしましたが、それを動かすことができませんでした。
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
スペルミスはいらいらしますね。 empty
のつづりを確認してください。
#!/bin/bash -e
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
私はシェルスクリプティングが大好きですが、スペルミスをするとシェルがあなたを助けてくれないのに対して、あなたのC++コンパイラのようなコンパイラがあなたを助けてくれることが欠点です。
@Matthiasが示唆しているように、私がempty.txt
とfull.txt
の役割を入れ替えたことに偶然に注目してください。
[ -s file.name ] || echo "file is empty"
[[-s file]] - >ファイルのサイズが0より大きいかどうかを調べます
if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi
必要ならば、これは現在のディレクトリにあるすべての* .txtファイルをチェックします。そしてすべての空のファイルを報告します。
for file in *.txt; do if [[ ! -s $file ]]; then echo $file; fi; done
他の答えは正しいですが、"-s"
オプションを使用すると、ファイルが存在しなくてもファイルが空であることが示されます。
この追加チェック"-f"
を追加して、ファイルが最初に存在するかどうかを確認することで、結果が正しいことを確認します。
if [ -f diff.txt ]
then
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
else
echo "File diff.txt does not exist"
fi
@ 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
答えの多くは正しいですが、私はそれらがより完全な/単純化されたものなどであるかもしれないように私は感じます:例えば
# BASH4+ example on Linux :
typeset read_file="/tmp/some-file.txt"
if [ ! -s "${read_file}" ] || [ ! -f "${read_file}" ] ;then
echo "Error: file (${read_file}) not found.. "
exit 7
fi
$ read_fileが空かそうでない場合は、exitでshowを停止します。何度も私は反対を意味するためにここでトップの答えを読み違えていました。
[[ -f filename && ! -s filename ]] && echo "filename exists and is empty"
ファイルが空または空白のみかどうかを確認するには、grepを使用できます。
if [[ -z $(grep '[^[:space:]]' $filename) ]] ; then
echo "Empty file"
...
fi
空の__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環境変数も破壊されるため、開いているシェルも破壊されます。とにかく、私は共有すると思った!