• ベストアンサー

ファイルが0バイト以上の時だけcompressしたい

0バイトのファイルをcompressしようとすると 「ファイルは変更されていません」というメッセージが出ます。 よって、ファイルの容量を見て、0バイト以上の時だけ compressするというシェルを作りたいのですが やり方が分かりません。どうすればよいのでしょう ちなみに、ファイルがあるかどうかは以下でできましたが。 if [ -f ファイル名 ] ; then 処理 ;fi

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

if [ -s ファイル名] ; then 処理 ;fi を使用して下さい。ファイルが存在し、かつ0バイトより大きい場合に、この -s テストコマンドは真を返します。

gogoogoo11
質問者

お礼

確認できました。 ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • findとcompressについて

    OSはSolarisを使用しています。Verは2.6か8だと思います。 通常compress命令を使用するとファイルを圧縮できるというのは わかるんです。findが検索するという命令ということも分かっています。 findで検索したファイルを圧縮する命令をUNIXシェルの中に記述したと します。その際にfindで指定したファイルを圧縮するプログラムを作成します。 その時に、指定した条件でファイルが見つからなかった場合に、 compress命令を実行するとプログラムが止まってしまうんです。 通常、UNIXのプロンプト!?よりcompressを実行した場合にで 指定したファイルが存在しない場合には ”ファイルもディレクトリもありません”。と表示されますよね。 圧縮したファイルを指定した場合にも確かメッセージが返ってきた と思います。 ここで質問したいのは3点あります。 1.シェルの中に記述した場合、ファイルが存在しない場合には処理が止まって  しまうのか?(指定したフォルダにファイルが何にも存在しない場合) 2.compressのオプション(-fなど)で、ファイルが存在しなかった場合の  回避はできるのか? 3.その他の方法にてプログラムが止まることの回避はできるのか?  もしくはプログラム上にエラーがあるのか? ぜひ回答よろしくお願いします。

  • フォルダが存在するかどうかを判断したい

    シェルの中で、特定のフォルダが存在するかどうかを判断し、 存在しなかった場合だけ、ある処理を行うようにしたいと思います。 どのようにすればよろしいのでしょう? ちなみに、ファイルがあるかどうかは以下で確認できました。 if [ -f ファイル名 ] ; then 処理 ;fi

  • solaris7でのcompress

    いつもお世話になっております。 solaris7のcompressコマンドについて質問です。 compressに -f のオプションをつけても、戻り値が2で返ってきてしまいます。(圧縮したファイルが圧縮前のファイルより容量が大きい場合)。 manでcompressコマンドを確認しても、オプションで -f を使用した場合は、戻り値が2で返ってくることはなさそうなんですが・・・・・。 > ls -l file.txt -rw-r--r-- 1 zz001 zz001 0 Mar 24 21:06 file.txt > > compress -cf file.txt > file.txt.Z > > echo $? 2 > > ls -l -rw-r--r-- 1 zz001 zz001 0 Mar 24 21:06 file.txt -rw-r--r-- 1 zz001 zz001 3 Mar 24 22:12 file.txt.Z  ちなみにwhichコマンドで/usr/bin/compressでした。  Solaris8では同様の処理をすると戻り値は0でしたが、どうにもわかりません。solaris7特有の動きなのでしょうか?

  • スクリプトファイル編集について

    ファイル編集について勉強なのですがどうしてもできません。 複数ファイル内よりIF構文を見つけてFILE_A.txtのIF書式へ変換する。 ※編集前にFILE_B.txtの変更箇所をコメント化して編集後に変換、 FILE_A.txtの書式であれば編集しない処理を作りたいと思うのですが・・・ FILE_A.txt if [ $? != 0 ] ; then   echo "てすと" fi 編集前 FILE_B.txt -- if [ -f $file ] then   echo "てすと" fi 編集後 FILE_B.txt -- #if [ -f $file ] #then if [ -f $file ] ; then   echo "てすと" fi 以上よろしくおねがいします。

  • BシェルのIF文について。。

    BシェルのIF文について。。 現在、Bシェルで特定のファイルが存在する場合、ファイル名の末尾をカウントアップ(ファイル名_01)しようと考えております。 以下がスクリプトの内容なのですが fiが無効というエラーが出てしまいます。。。 対応が分かる方がいらっしゃれば教えてください。。 if [ -f aaa_00.txt] then touch aaa_001.txt fi よろしくお願いします。

  • awkでのファイル読み込み

    シェルを作成しています。 昔kshを作ってたので、ksh+awkでCSVファイル処理をしたいのですが、記憶が古く、覚えていないし、調べてもわかりませんでした。 参考になるサンプルソースや、参考になるHP等助言頂けたうれしいです。 ファイル読み込みがうまくいってないのか、getlineを使うべきなのか..。 #!/bin/ksh -x #Parameter Check if [ $# -ne 1 ];then echo "Error File Name Must Specified" exit 1 fi # Check File Exist ls $1 >/dev/null 2>&1 if [ $? -ne 0 ];then echo "Error File Not Found" exit 1 fi # Read File awk -F"," '{  フィールドセパレター変更→CSVファイルを一行ずつ読み込み→各処理をしたいです。 }' $1 宜しくお願いいたします。

  • ディスク容量チェックについて

    Cシェルを用いてディスク容量チェックのツールを作ろうとしています。 df -k で容量(capacity)が80%以上の場合、ファイルシステム名と容量を出力したいと考えています。 ちなみに色々調べていると、Bシェルでほぼ似たような処理を見つけました。(以下抜粋) df -m | grep / | while read READDATA do RATE=`echo "${READDATA}" | awk -F' ' '{print $5}'` RATE1=`echo "${RATE}" | awk -F'%' '{print $1}'` VOL1=`echo "${READDATA}" | awk -F' ' '{print $6}'` if [ $RATE1 -gt $CMAX ];then echo '('${VOL1}') DISK_SPACE_ERROR ' "${RATE1}" % cwc_secall.sh DISK_SPACE_${VOL1} else echo '('${VOL1}') DISK_SPACE_OK ' "${RATE1}" % fi                                   以上 Cシェルで上記のようにreadコマンドがうまく使えません。 長くなりましたが、どなたかご教授願います。

  • AIX kshスクリプトのtar+compressを1行で書く方法について

    こんにちは。はじめまして、hisatoと申します。 AIX kshスクリプトのtar+compressについて 質問がございます。 基本は下記の通りで問題なく完了するのですが、 # アーカイブ処理 tar -cvf - <固める対象のファイル名> | compress >圧縮ファイル名.tar.Z 下記の処理にすると、エラーが発生してしまいます。 tar -cvf - -L <固める対象のファイル名リスト> | compress >圧縮ファイル名.tar.Z tar: 次のフラグにはパラメータが必要です: L 使用方法: tar -{c|r|t|u|x} [-BdFhilmopsvw] [-Number] [-fFile] [-bBlocks] [-S [Feet] [Feet @Density] [Blocksb]] [-LInputList] [-NBlocks] [-C Directory] File ... -Lを使用する場合は、-オプションを使用して新規アーカイブ・ファイルを作成し、 そのアーカイブ・ファイルをcompressに渡すことはできないのでしょうか? 以上、ご教授お願いいたします。

  • シェルスクリプトで引数をファイル名に使うには?

    シェルスクリプトでutfとshift-jisの変換を行いたいと思ってます。 ファイル出力のところでファイル名を$1と引数にするとうまくいきません。(変換されてなかったり、空ファイルできたり) >! $1 ではなく $1.xx とかにするとうまくいきます。 どうしたら引数のファイル名に出力できるでしょうか? #!/bin/sh if [ $2 = 'us' ] then cp $1 $1.utf8 iconv -f UTF-8 -t SHIFT-JIS $1 >! $1 echo "$1 UTF-8 => SHIFT-JIS [ OK ]" elif [ $2 = 'su' ] then cp -f $1 $1.sjis iconv -f SHIFT-JIS -t UTF-8 $1 >! $1 echo "$1 SHIFT-JIS => UTF-8 [ OK ]" else echo "$1をコンバートできませんでした。" fi

  • シェルスクリプト構文で「もしファイルが存在しなかったら」を表すには?

    シェルスクリプトのif文で「存在しなかったらthen節へ」の表現方法を伺っても宜しいでしょうか? 現状「存在するならthen節へ」を使い下のようにしています。 if [ -e XXXXX ]; then # XXXXXが存在しなかったら echo # 存在時は処理なし。が、構文不明の為、無意味なechoを入れてる else # 存在しない時の処理がここにある fi 上を自然な文法に修正したいです。以上どうか宜しくお願い致します。

このQ&Aのポイント
  • FAXをDROPBOXへ転送の設定ができません。お役立ちツールにもはいれずネットワークエラー3がでます。
  • ネットワークプリンターとしては使えていてBRAdminでも認識されています。
  • インターネットにつながっていない状況だとおもうのですがよろしくお願いいたします。
回答を見る