18. november 2004 - 08:24Der er
8 kommentarer og 1 løsning
Program til at læse en fil og flytte den til anden mappe.
Tror dette er en nem opgave for dem der kan noget om programmering i C/C++.
Jeg skal sortere nogle mapper på en linux maskine med tusindevis af txt filer i hver mappe. De har alle et vilkårligt navn, såsom ljkh537sfgfgsd.txt Problemet er at det skal gøres manuelt. Dvs. jeg skal åbne filen, se vad der er inde i den, og flytte den til en udaf 2 forskellig mapper.
Lige nu så gører jeg det ved at åbne filen i less, derefter så flytter jeg filen manuelt, ved at huske fil navnet. Det er ikke særligt hurtigt.
så jeg skal bruge et lille program som automatiskt åbner hver fil, viser den ligsom less hvor jeg kan scrolle op og ned. Men så skal jeg kunne trycke på for exemepel 's' for at flytte den til en mappe, og 'd' til en anden mappe, og derefter åbne den næste fil.
Man kunne for exemepel ved start ef program indtaste vilke mapper der skal flyttes til, eller bedre, en configurationsfil hvor man specificerer forskellige taster med vilken mappe der skal flyttes til. Der skal være mulighed for at scrolle op eller ned.
Jeg er logget ind på maskinen via SSH, så det skal være consol baseret, ligsom less.
Skal der flere points til fordi det er sværere end jeg tror, så må i sige til, så giver jeg flere points.
Hmm, om det er muligt, ville det være godt om programmet også 'Highlighted' Specifikke ord, som man specificerer i configurations filen. Det gør det lidt hurtigere at se hvor filen skal flyttes til.
Kan den laves til at selv læse vilke filer der er i mappen, og derefter vise dem en efter en? Og eventuelt, have en option at slette filen, og en til at avbryde?
Du burde kunne bruge følgende. Du skal rette kommandoerne til move (det hedder mv $file /somewhere) og slette ordet echo foran del kommandoen når du føler dig sikker på at scriptet gør det det skal (og ikke andet). Du kan rette * i første linie så den lister de rigtige filer i den rigtige mappe.
for file in * ; do less $file echo 'Move to /foo -> f' echo 'Move to /bar -> b' echo 'Delete -> d' echo 'Exit -> e' echo 'Next -> any other' read ans case "$ans" in b|B) echo move $1 /bar ;; f|F) echo move $1 /foo ;; d|D) echo del $file ;; e|E) exit ;; esac done
Jaa, det ser jo ud til at være noget i den stil jeg skal bruge.
Et par ting mere der ville være dejligt. Kan man få less til at markere visse ord som er i teksten? For exemepel markere alle steder hvor der står 'Subject' og 'From' Det gærer det lidt hurtigere at søge igennem teksten.
Og en ting til, kan man eliminere at trykke enter efter valg? dvs. så snart jeg trykker 'f' så udfører den det den skal, uden at man skal trykke på Enter?
Du kan bruge --pattern=foo som parameter til less for at få den til at markere ordet foo i filen, kør less --help for at se en liste med parametre til less. Jeg læste et sted at man kan bruge regexp med pattern, men det kan jeg ikke få til at virke med min less (msys på windows). Jeg kan ikke få den til at acceptere flere --pattern parametre.
Jeg kender ikke et kommando til at læse en enkelt tast unden at vente på enter.
hehe, ok, Det er i orden, det gør jeg heller ikke. Har bare været medlem så længe at jeg har lidt sammlet op. :-) Mange Tack....
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.