2017-12-28 27 views
0

私のLinuxのコマンドは、私の質問がで猫ファイル1行でそれを確認

ファイルをファイル/etc/myfile.txtが空でないかどうかを確認し、保存する方法である

cat /etc/myfile.txt > newfile.txt 

です1あなたがファイルをチェックするbashに条件式を使用することができ、コマンドライン

答えて

3

は(-fフラグ)が存在し、その-sフラグと空ない

また、catの代わりにcpを使用してファイルの新しいコピーを作成することもできます。

if [[ -f /etc/myfile.txt && -s /etc/myfile.txt ]]; then 
    cp /etc/myfile.txt newfile.txt 
fi 

適切な読み取り可能な例の代わりに1行を使用するのはどういうことでしょうか。とにかくあなたの代わりにcpを使用し、あなたがcatにファイルを持っていない

[[ -f /etc/myfile.txt && -s /etc/myfile.txt ]] && cp /etc/myfile.txt newfile.txt 
+0

を必要とされているチェックしたい場合は、私は、なぜ私のコメントが削除されたかわからないが、私はまだ '-r'は役に立つかもしれないと思います。それとも、そうでないと言えるものを見つけましたか? – PesaThe

+0

少し読めるようにしておくと、onelinerが必要なときに 'test -f /etc/myfile.txt && test -s /etc/myfile.txt && cp /etc/myfile.txt newfile.txt'のようなものを書きます。 –

3
[ -s "/etc/myfile.txt" ] && cat /etc/myfile.txt > newfile.txt 

として上記のロジックを使用することができます。

ここで、-sオプションは、ファイルのサイズがゼロでないかどうかをチェックします。 Linuxマシン上man test

 -s FILE 
      FILE exists and has a size greater than zero 

EDITから:/etc/myfile.txtが通常のファイルであれば解決策が十分である上。 1は、それがnon-zeroサイズをチェックする前に、通常のファイルであれば、-fフラグは

[[ -f "/etc/myfile.txt" && -s "/etc/myfile.txt" ]] && cp /etc/myfile.txt newfile.txt 
+0

このテストでは、サイズが0より大きいディレクトリについてもtrueを返します。たとえば、マシン上の "/ etc"は4kbのサイズを持ち、 '[-s"/etc "]'は "/ proc"私のマシン上で0のサイズを持っていればfalseを返します。 – confetti

関連する問題