「ファイル」出力に基づいてファイルをフォルダにソート

「ファイル」出力に基づいてファイルをフォルダにソート

拡張子のない何百万ものファイルがあり、それらを別のフォルダにソートしたいと思います。 「ファイル」でファイルを識別できますが、手動で処理できるさまざまな種類が存在します。 「ファイル」の出力を使って「Word」をgrepしてから、「office」フォルダに移動したいと思います。単一のファイル形式に対して作成できますが、持っているすべてのファイル形式に対しては作成できません。それなら条件が足りません。私はシグウィンを使用しています。誰でもこれを行う方法を教えてもらえますか?ありがとうございます!

ピーター

ベストアンサー1

grep代わりに、シェルケース構成で単純なパターンマッチングを使用できます。たとえば、

#!/bin/sh

for f in *; do 

  [ -f "$f" ] || continue

  ftype="$(file -b -- "$f")"

  case $ftype in 
    *"shell script"*)
      echo mv -- "$f" scripts/
      ;;
    *"C source"*|*"C++ source"*) 
      echo mv -- "$f" src/
      ;;

    .
    .
    .

    *) printf '%s: skipping unrecognized type "%s"\n' "$f" "$ftype" >&2
      ;; 
  esac

done

ターゲットディレクトリが存在する必要があります(ただし、条件を使用して作成するのは簡単ですmkdir -p)。echo正しいことをしていると確信している場合は、esを削除してください。

おすすめ記事