ファイルの並べ替えとコピー

ファイルの並べ替えとコピー

私はここに初めて来ましたのでご了承ください。

何千ものファイルを含むディレクトリがあります。ファイル名は常に1〜2文字で始まり、その後にアンダースコア「_」の前に4文字が続きます。各モードのファイル数は異なる場合があり、ファイル名の下線の後の部分が変更されます。

サンプル:

Parentdir:
->AA01_*.pdf 
->AA01_*.html
->AA01_*.txt
...
->ZZ99_*.pdf
->ZZ99_*.html
->ZZ99_*.txt
...
->A001_*.pdf
->A001_*.html
->A001_*.txt
...
->Z999_*.pdf
->Z999_*.html
->Z999_*.txt

ファイル名の文字だけを使用して新しいディレクトリを作成し、その文字で始まるファイルで埋めるコマンドを実行したいと思います。ターゲットディレクトリに同じ名前のファイル(元のディレクトリの更新されたファイル)がある場合は、最新のファイルを保持したいと思います。だから:

New dir/files:
->AA
  AA01_*.pdf
  AA01_*.html
  AA01_*.txt
...
->ZZ
  ZZ99_*.pdf
  ZZ99_*.html
  ZZ99_*.txt
...
->A
  A001_*.pdf
  A001_*.html
  A001_*.txt
...
->Z
  Z999_*.pdf
  Z999_*.html
  Z999_*.txt

これは達成できますか?

ありがとうございます!

ベストアンサー1

ファイルセットに移動します。文字プレフィックスを選択してください。ディレクトリを作成し(必要な場合)、ファイルをそのディレクトリに移動します。

#!/bin/sh
for item in *
do
    if [ -f "$item" ]
    then
        prefix="$(echo "$item" | sed 's/[^A-Z].*//')"
        echo mkdir -p "$prefix"
        echo mv "$item" "$prefix/"
    fi
done

echoプレフィックスを削除するmkdirと、mv満足のいくときに必要に応じて動作します。

おすすめ記事