|
|
|
|
Dateinamen auslesen und Ordner erstellen |
Champus
BlackBoarder
Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe
|
|
Dateinamen auslesen und Ordner erstellen |
|
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 |
|
|
LX
El Comandante en Jefe
Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx
|
|
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 |
|
|
PygoscelisPapua
BlackBoarder
Dabei seit: 20.12.2003
Beiträge: 1.309
Herkunft: Kiel, Schleswig-Holstein, Germany
|
|
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
]
Edit:
Da war der LX schneller - und hat wahrscheinlich auch die bessere Lösung
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
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 |
|
|
|
|
|
|