Erstellen Sie ein Verzeichnis mit Dateinamen und verschieben Sie die Dateien in den entsprechenden Ordner

Erstellen Sie ein Verzeichnis mit Dateinamen und verschieben Sie die Dateien in den entsprechenden Ordner

Ich habe einen Ordner mit etwa 150 Textdateien. Ich möchte Ordner mit den Namen der 150 Dateien erstellen. Anschließend möchte ich, dass die Textdatei in den entsprechenden Ordner verschoben wird.

Beispielnamen der Dateien im Verzeichnis „myfolder“:

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

So stelle ich mir meine neue Struktur vor:

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

Natürlich ist das Erstellen eines Verzeichnisses mit den Dateinamen für mich kein Problem mit mkdir.

Antwort1

@gniourf_gniourfhat die richtige Idee:

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

Dies sollte POSIX-kompatibel sein. Es istnichtWiedereintritt. Es wirdnichtfunktioniert, wenn Sie zwei beliebige Dateien mit den Namen something.txtund haben something.txt.txt.

verwandte Informationen