私はここに初めて来ましたのでご了承ください。
何千ものファイルを含むディレクトリがあります。ファイル名は常に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
満足のいくときに必要に応じて動作します。