ファイル名の部分に基づいてファイルをサブフォルダーに分類するにはどうすればよいですか?

ファイル名の部分に基づいてファイルをサブフォルダーに分類するにはどうすればよいですか?

ディレクトリ内のファイルは次のとおりです:

Ford-Mustang-001.jpg
Ford-Mustang-002.jpg
Ford-Mustang-003.jpg

Chevy-Impala-001.jpg
Chevy-Impala-002.jpg
Chevy-Impala-003.jpg

これらをサブフォルダに分類したいと思います:

/Mustang
/Impala

答え1

明らかな答えは:

ディレクトリを作成して、そこにファイルを置くだけです。

mkdir Mustang Impala
mv *Mustang*.jpg Mustang/
mv *Impala*.jpg Impala/

これはファイルグロビング; これはシェルの機能です。


膨大な数のファイルがあり、それらを収容するために多くの異なるディレクトリを作成する必要がある場合は、JJoaoの回答

答え2

プレネームの使用(Perl リネームツール)

prename 'if(/(.+?)-(.+?)-(.*)/){mkdir $2; $_="$2/$_"}' *.jpg

答え3

名前を変更したい場合はawkを使用してファイル名を分割します。mvawk {split $0, a, "-"; mkdir a[1]; mv $0 a[1]/}プログラムでこれを行うことができます。

関連情報