script zum Erstellen von Folders und zum Sortieren von files

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
AB65
Beiträge: 19
Registriert: 09.02.2003 22:18:54

script zum Erstellen von Folders und zum Sortieren von files

Beitrag von AB65 » 08.04.2007 21:46:41

Hallo,
ich wollte es zwar nicht glauben habe aber kein script oder Programm gefunden was mir hilft.
Eins meiner Verzeichnisse ist angefüllt mit Dateien, dafür sollen Ordner erstellt werden und die passenden Dateien dorthin veschoben werden.
Die meisten Dateien haben diesen Namensaufbau XXXX_Suchstring.Dateiformat
Vielleicht hat jemand ja was passendes.
Schöne Restostern noch
AB65

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 09.04.2007 13:50:24

Hi,
is aber nur 'n ungetesteter Schuss aus der Huefte:

Code: Alles auswählen

#!/bin/bash

for datei in $(ls)
do
  my_str=$(basename $datei|cut -c 6-)
  #echi "Org. name=$datei - Suchstr.=$my_dtr"
  mv $my_str ./MEIN_VERZ
done
Das setzt allerdings voraus, das der Suchstring immer an Position 6 anfaengt. Bevor du den move verwendest, lass erstmal die Schleife mit dem echo laufen un zu testen ob's das ist was du scuhst.

Frohe Ostern
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
AB65
Beiträge: 19
Registriert: 09.02.2003 22:18:54

Beitrag von AB65 » 09.04.2007 14:11:16

Vielen Dank aber fehlt da nicht eine Zeile mit mkdir um die Ordner zu erstellen denn jetzt bricht es immer mit

mv: Aufruf von stat für ,,XXX" nicht möglich: Datei oder Verzeichnis nicht gefunden

ab (hier ist XXX jetzt ein Platzhalter.)
MfG
AB65

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 10.04.2007 08:59:04

Hi,

klar kann es sein das da ein mkdir fehlt, ich bin halt davon ausgegangen, das es die Ordner schon gibt.
Das das Script abbricht liegt daran das es "ein Schuss aus der Huefte " war, hier Version 1.1:

Code: Alles auswählen

#!/bin/bash

for datei in $(ls)
do
  my_str=$(basename $datei|cut -c 6-)
  mkdir -p $my_str 2>/dev/null
  #echi "Org. name=$datei - Suchstr.=$my_dtr"
  mv $datei ./MEIN_VERZ
done
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
AB65
Beiträge: 19
Registriert: 09.02.2003 22:18:54

Beitrag von AB65 » 10.04.2007 21:04:35

Danke roli
das sieht schon mal gut erstellt Ordner und schiebt alles rein die Feinheiten mach ich dann per Hand.
Könntest du das skript noch ein wenig erklären?
MfG
AB65
tja das war voreilig das script hat schön Ordner erstellt nur leider die Dateien ins Nirvana befördert.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 11.04.2007 09:36:14

Moin,
AB65 hat geschrieben:tja das war voreilig das script hat schön Ordner erstellt nur leider die Dateien ins Nirvana befördert.
joh, ich seh's gerade, tut mir leid, war aber halt auch jedesmal "ein Schuss aus der Huefte".

Code: Alles auswählen

#!/bin/bash

for datei in $(ls)
do
  my_str=$(basename $datei|cut -c 6-)
  mkdir -p $my_str 2>/dev/null
  #echi "Org. name=$datei - Suchstr.=$my_dtr"
  mv $datei ./$my_str
done
Das Ziel des mv war noch MEIN_VERZ, wenn du's nicht geaendert hast. Da muss natuerlich das Verzeichnis hin, das zuvor mit mkdir erstellt wurde. Das wuerde heissen, das die letzte Datei die das Script bearbeitet hat, jetzt in dem selben Verzeichnis unter dem Namen MEIN_VERZ zu finden ist. Dorthin wirden alle Dateien Verschoben, und haben sich jeweils überschrieben, sorry.
Erklaerung:
Zeile 1 ist die "Magicline", oder auch "shebang" ganannt, damit wird festgelegt, wer das Script ausfuehrt, die Bash in diesem Fall
In der naechsten Zeile wird die Ausgabe von ls Stueck fuer Stueck an die Variable datei zugewiesen.
Das "do" beginnt einen Block.
Hetzt wird aus dem Dateinamen der interessante Teil herausgeschnitten, und der Variable my_str zugewiesen. Was basename und cut genau machen, kannst du im Manual nachlesen.
Zu mkdir steht auch alles im Manual, das "2>/dev/null" leitet Fehlerausgaben, wenn sie denn kommen sollten, ins Nirvana.
Anschliessend werden die Dateien verschoben.
Jetzt mir done noch den Block beenden, und das war's.[/code]
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
AB65
Beiträge: 19
Registriert: 09.02.2003 22:18:54

Beitrag von AB65 » 28.04.2007 20:12:13

sorry für die späte Antwort,
das funktioniert leider auch nicht es werden zwar Ordner erstellt ung jeweils eine Datei dorthin kopiert, Ich werde es jetzt händisch mit cp und mkdir lösen.
trotzdem vielenDank

Antworten