Avatar billede eldaria Nybegynder
18. november 2004 - 08:24 Der 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.

Mvh.
Brian
Avatar billede eldaria Nybegynder
18. november 2004 - 08:49 #1
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.
Avatar billede bertelbrander Novice
18. november 2004 - 21:56 #2
Du kunne lave et lille shell-script:

less $1
echo 'Move to /foo -> f'
echo 'Move to /bar -> b'
read ans
case "$ans" in
  b|B)
    echo move $1 /bar
    ;;
  f|F)
    echo move $1 /foo
    ;;
esac

Du skal selv ændre "echo move $1 /foo"  og "echo move $1 /bar" så den flytter filen derhen hvor den skal.
Avatar billede eldaria Nybegynder
24. november 2004 - 23:49 #3
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?
Avatar billede bertelbrander Novice
25. november 2004 - 00:55 #4
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
Avatar billede eldaria Nybegynder
25. november 2004 - 15:21 #5
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?
Avatar billede bertelbrander Novice
25. november 2004 - 19:39 #6
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.
Avatar billede eldaria Nybegynder
25. november 2004 - 22:43 #7
okidoke, men smid et svar, du har lavet livet en hel del nemmere for mig. og fortjener derfor points. :-)
Avatar billede bertelbrander Novice
25. november 2004 - 22:48 #8
Jeg samler ikke på point.
Avatar billede eldaria Nybegynder
25. november 2004 - 22:51 #9
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....
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester