Cシェル:ファイル形式に応じてさまざまな操作を実行する

Cシェル:ファイル形式に応じてさまざまな操作を実行する

私はCシェルに初めて触れました。コマンドラインからファイルを読み込み、zipファイル、.txt、シンボリックリンク、パイプ、またはその他のファイル(「不明」)であることを確認しようとしています。

その後、タイプに応じていくつかのコマンドを実行したいと思います。たとえば、txtファイルの場合は、これに関する情報(「テキストファイルです」)を印刷してサイズを指定します。

これが私が今まで得たものです:

!/bin/csh

if ( "echo ${1} | cut -d'.' -f2" == "zip" ) then
    echo $1 is a zip file
else
    echo sorry, $1 is not a zip file
endif

答え1

switchファイル名を分析するために使用されます。

switch ($1)
case *.zip:
  echo "$1 is a zip file"
  breaksw
default:
  echo "${1}: not supported"
endsw

ファイルタイプを解析するには、出力を解析しますls。最初の文字はファイルタイプです。

switch ("`ls -logd "$1"`")
case d*:
  echo "$1 is a directory"
  breaksw
# ...
endsw

実際には探しているかもしれませんfileファイルの内容を分析して、含まれるデータの形式を決定し、一般的ではないファイルのファイルタイプを報告するコマンド。

file -- "$1"

答え2

他のシェルと同様に、バックティックを使用して内部コマンドの結果を評価します。だから代わりに

"echo ${1} | cut -d'.' -f2"

これは文字列「zip」とまったく同じではない文字列です。

`echo ${1} | cut -d'.' -f2`

内部コマンドを評価し、結果を返します。

関連情報