ファイル名を使用してディレクトリを作成し、ファイルをそれぞれのフォルダに移動します

ファイル名を使用してディレクトリを作成し、ファイルをそれぞれのフォルダに移動します

約 150 個のテキスト ファイルを含むフォルダーがあります。 150 個のファイルの名前でフォルダーを作成したいと思います。 その後、テキスト ファイルをそれぞれのフォルダーに移動したいと思います。

myfolder ディレクトリ内のファイル名の例:

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

新しい構造をどうしたいか:

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

もちろん、ファイル名でディレクトリを作成することは私にとっては問題ではありませんmkdir

答え1

フォロー正しい考えを持っている:

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

これはPOSIXに準拠しているはずです。ない再入可能。ないsomething.txtおよび という名前の 2 つのファイルがある場合に機能しますsomething.txt.txt

関連情報