将文件复制到相应的目标文件夹

Copy files to their corresponding destination folders

我在一个文件夹中有许多文件,它们具有不同的扩展名 (.txt.ascii.mat)。我想将它们移动到与文件名相同的目标文件夹。

例如: 我有 a.txt, a.ascii, b.txt, b.ascii, b.mat 这样的文件。 我想先以 ab 的名称创建文件夹,然后我想将文件 a.txt,a.ascii 移动到文件夹 a 并将 b.txt,b.ascii,b.mat 移动到文件夹 b.

我尝试了如下代码。但是我需要一种自动创建文件夹并将文件移动到其中的方法。

#!/bin/sh
mkdir a b
for file in $(<list.txt)
do
cp "$file" a
done

似乎这个 Bash 脚本可以完成这项工作

#!/usr/bin/env bash
for file in $(<list.txt); do
    dirn="${file%.*}"
    mkdir -p "$dirn"
    cp "$file" "$dirn"
done