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

bio*_*han 6 directory rename files

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

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

~/myfolder/
       |______ ajhaslf.txt
       |______ oiueed.txt
       |______ dsflije.txt
Run Code Online (Sandbox Code Playgroud)

我希望我的新结构如何:

~/myfolder/
       |______ ajhaslf
                   |____ajhaslf.txt
       |______ oiueed
                   |____oiueed.txt
       |______ dsflije
                   |____dsflije.txt
Run Code Online (Sandbox Code Playgroud)

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

l0b*_*0b0 8

@gniourf_gniourf有正确的想法:

set -o errexit -o nounset
cd ~/myfolder
for file in *.txt
do
    dir="${file%.txt}"
    mkdir -- "$dir"
    mv -- "$file" "$dir"
done
Run Code Online (Sandbox Code Playgroud)

这应该是 POSIX 兼容的。它不是可重入的。它会不会,如果你有一个名为任意两个文件的工作something.txtsomething.txt.txt