Machen Sie zuerst ein Backup!
for i in $(find . -maxdepth 1 -type f -iname "*.pdf" -exec basename "{}" .pdf \;); \ do mkdir $i; \ mv $i.pdf $i; \ done
Der find
holt die Dateien (-f) einfach aus dem aktuellen Verzeichnis (-maxdepth 1), die mit ".pdf" bezeichnet werden und den Buchstaben ignorieren. Dann nimmt es den Teil des Dateinamens vor .pdf (Basisname) und hält diesen in einer Variablen.
Dann erstellt es ein Verzeichnis ( mkdir
), das diese Variable verwendet. Eine Datei "AdobeFile.pdf" erstellt dann ein Verzeichnis "AdobeFile" und verschiebt ( mv
) die Datei in das Verzeichnis.
Ich empfehle , einen Teil der Dateien in ein temporäres Verzeichnis zu kopieren, dort zu arbeiten, die Dateien zu überprüfen, wohin Sie wollen, und dann auf dem vollständigen Satz auszuführen.
Ich habe den Umgang mit Dateinamen mit Leerzeichen oder nicht richtig getestet. in ihnen, noch mit komischen Zeichen (wie UTF8).