BlackBoard » Computerecke » Betriebssysteme » Linux Dateinamen auslesen und Ordner erstellen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Dateinamen auslesen und Ordner erstellen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Champus Champus ist männlich
BlackBoarder


images/avatars/avatar-2272.png

Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe

Dateinamen auslesen und Ordner erstellen       Zum Anfang der Seite springen

Moin,
ich habe hier nun CenterICQ installiert, da aber leider nicht alle Kontakt meiner Trillianliste gefunden werden, wollte ich diese selber anlegen. Dies funktioniert indem man in .centericq einen Ordner mit dem Namen der ICQ Nummer anlegt. Da ich aber um die 400 Kontakte habe, kann ich das nicht alles per Hand machen.

Nun gut, gucke ich im Trillian dir, und siehe da, alle Logs der Leute mit denen ich gechattet habe stehen in einem Ordner drin, der Name der File == die ICQ Nummer der Person.

Das Problem ist jetzt (auf ein direktes Beispiel bezogen):
Sagen wir jemand hat die ICQ Nummer 1234567. Dann befindet sich dort ENTWEDER eine File 1234567.log ODER eine File 1234567.xml ODER eine File 1234567-assets.xml.

Jetzt bräuchte ich von euch einen Befehl, Trick o.ä., wie ich jede ICQ Nummer, also jeden Filename, auslese, die Endungen plus bei bedarf das "-assets.xml" wegstreiche, überprüfe ob doppelte Einträge vorhanden sind, und falls nein, Ordner nach den Namen der nun vorhandenen ICQ Nummer im Ordner .centericq erstelle.

Hoffe ihr versteht das.
Nochmal kurz:
1234567.log <- ".log" wegstreichen, Ordner in .centericq mit dem Namen "1234567" erstellen.

7654321.xml <- ".xml" wegstreichen, Ordner in .centericq mit dem Namen "7654321" erstellen.

3217654-assets.xml <- "-assets.xml" wegstreichen, Ordner in .centericq mit dem Namen "3217654" erstellen.


3456789.xml , 3456789.log <- .xml und .log wegstreichen, Ordner in .centericq mit dem Namen "3456789" erstellen.


Ich hoffe mal sehr dass ich versteht wie ich das meine und könnt mir einen Befehl, ein Shellscript o.ä. geben dass genau dies erledigt.

Edit:
LX hat da schon was im Channel zu geschrieben:
Zitat:
<LX> corvuscorone: mal grob gesagt, du machst ein Script, welches über alle Dateien in dem Trillian-Verzeichnis geht, per RegExp aus den Dateinamen nur die Zahlen holt und dann mkdir mit dieser Zahl aufruft


Ich persönlich kann dies aber nicht und hoffe deshalb auf eure Hilfe!




Gruß
CorvusCorone

__________________
CorvusCorone -> Champus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Champus: 27.08.2005 13:59.

27.08.2005 13:41 Champus ist offline Homepage von Champus Beiträge von Champus suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung       Zum Anfang der Seite springen

Das sollte in etwa tun:

for i in `ls`; do mkdir $(echo $i | egrep -e '^[0-9]+' | sed -e 's/[^0-9]*//g') ; done

Pfade musst du natürlich selber eintragen.

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

27.08.2005 14:07 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
PygoscelisPapua PygoscelisPapua ist männlich
BlackBoarder


images/avatars/avatar-2293.png

Dabei seit: 20.12.2003
Beiträge: 1.309
Herkunft: Kiel, Schleswig-Holstein, Germany

      Zum Anfang der Seite springen

Da müsstest Du Dir ein kleines Bash-Script zu schreiben. Was Du brauchen wirst, ist awk [zum trennen von Strings nach bestimmten mustern], dass Du ungefähr so aufrufen kannst:

awk -F '.' '{print $1}';

Woben -F '.' das Trennzeichen definiert, und '{print $1}' angibt, welcher Teil dann ausgegeben werden soll [hier der erste Teil].

Das ganze müsstest Du dann ein weiteres mal aufrufen um auch noch den "-assnet" teil weg zu bekommen - also die ausgabe am besten pipen.

am Ende sollte dann irgendwas wie:

datei=$(awk -F '.' '{print $1}' | awk -F '-' '{print $1})
mkdir $datei

bei rauskommen. [Wahrscheinlich läuft das so nicht ganz - musst Du halt ein bischen ausprobieren - programmieren kannst Du ja, da sollte das nicht so schwer fallen Augenzwinkern ]

Edit:
Da war der LX schneller - und hat wahrscheinlich auch die bessere Lösung Augenzwinkern
Was mir grad noch aufgefallen ist: Die Datei fehlt - die müsstest Du dort auch noch einbauen - am besten per übergabe an das Script, und dann statt der ersten Zeile lieber:

datei=$(grep $1 | awk -F '.' '{print $1}' | awk -F '-' '{print $1})

wobei das erste $1 dann die übergebene Datei ist - so kann man dann das script mit ls * | skript.sh aufrufen. Das nur zur Vervollständigung - hör aber lieber auf LX, der kann sowas besser Augenzwinkern

Edit2: Aua - statt make natürlich mkdir -.-

__________________
There are only two kinds of programming languages: those people always bitch about and those nobody uses.
(Bjarne Stroustrup)
*
Moving on to pastures new
GPG Key

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von PygoscelisPapua: 27.08.2005 14:15.

27.08.2005 14:08 PygoscelisPapua ist offline Homepage von PygoscelisPapua Beiträge von PygoscelisPapua suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Computerecke » Betriebssysteme » Linux Dateinamen auslesen und Ordner erstellen

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH