フォルダを作成して特定のファイルをフォルダに移動するBashコマンド

フォルダを作成して特定のファイルをフォルダに移動するBashコマンド

私はbashを使ってこれを達成しようとしています。

ファイルディレクトリがあり、写真をインポートする例は次のとおりです。

January 2010 MA - C3 Edexcel.pdf
January 2010 MS - C3 Edexcel.pdf    
January 2010 QP - C3 Edexcel.pdf    
January 2011 MA - C3 Edexcel.pdf 
January 2011 MS - C3 Edexcel.pdf    
January 2011 QP - C3 Edexcel.pdf

毎年3つのファイルをインポートし、その年のフォルダに入れるコマンドを探しています。たとえば、最初の3つのファイルは2010というフォルダに配置し、2番目の3つのファイルセットは2010年というフォルダに配置する必要があります。 2011というフォルダに入れます。

だから私がしたいことは

 mkdir 2010| mv *2010* 2010

ファイルの各年について

確かに言えば、フォルダは私が示したものよりはるかに大きいです。つまり、毎年フォルダを作成すると時間がかかりすぎます。

可能ですか?

答え1

このスクリプトは、あなたが何年も要求してきたものを満たしてくれるでしょう。

for i in $(seq 2010 2020); do 
    mkdir -p "$i" && 
    mv *"$i"*.pdf "$i"
done

答え2

簡単に理解する方法

mkdir 2010 && mv *2010*pdf !$

2011年も同様です...

多年ファイルを繰り返す解決策は次のとおりです。

for i in $(seq 0 9) ; do mkdir 201${i} && mv *201${i}*pdf !$ ; done 

関連情報