使用文件名创建目录并将文件移动到其各自的文件夹

使用文件名创建目录并将文件移动到其各自的文件夹

我有一个包含大约 150 个文本文件的文件夹。我想以 150 个文件的名称创建文件夹。之后,我希望将文本文件移动到其各自的文件夹中。

myfolder 目录中的文件名称示例:

~/myfolder/
       |______ ajhaslf.txt
       |______ oiueed.txt
       |______ dsflije.txt

我希望我的新结构是:

~/myfolder/
       |______ ajhaslf
                   |____ajhaslf.txt
       |______ oiueed
                   |____oiueed.txt
       |______ dsflije
                   |____dsflije.txt

当然,使用文件名创建目录对我来说不是问题mkdir

答案1

@gniourf_gniourf有正确的想法:

set -o errexit -o nounset
cd ~/myfolder
for file in *.txt
do
    dir="${file%.txt}"
    mkdir -- "$dir"
    mv -- "$file" "$dir"
done

这应该符合 POSIX 标准。这是不是可重入。它会不是如果您有任何两个名为something.txt和 的文件,则可以工作something.txt.txt

相关内容