パターンのあるファイルを別のフォルダにコピーする

パターンのあるファイルを別のフォルダにコピーする

ディレクトリには次のファイルがあります。

ルブロン_2018.txt ルブロン_2019.txt

melo_2018.log melo_2019_01.log

Wade_2018.bak Wade_2019_02.jpg

すべてのファイルには「_」区切り文字があり、プレフィックスに従ってファイルを別の新しいディレクトリにコピーしたいと思います。例えば

lebron_2018.txt lebron_2019.txt は \backup\lebron にコピーされます。

melo_2018.log melo_2019_01.log が \backup\melo にコピーされます。

wade_2018.bak wade_2019_02.jpg は \backup\wade にコピーされます。

cp lebron*.* \backup\lebron で実行できます。しかし、ファイル名を検索してファイル名に基づいてフォルダに自動的にコピーできますか?

ベストアンサー1

@AdminBeeリンクされた投稿には良いアイデアがたくさんありますが、glob使用できるパターンごとにループを実行するだけで正しいと感じます。

空白がないと仮定します。

for f in $(ls *_*.txt | cut -d_ -f1 | uniq); do
    mkdir -p ./backup/$f;
    cp $f_*.txt ./backup/$f/;
done

おすすめ記事