Script Bash: kopējiet jaunus attēlus no SD uz datoru

Dažreiz datorā mums jāveic atkārtoti uzdevumi, kas laika gaitā kļūst garlaicīgi. Dažos gadījumos mēs varam atvieglot savu darbu, izmantojot skriptus, kas mums der.

Šodien es rakstu, lai parādītu jums vienkāršu skriptu, kas atrisināja vajadzību: kopējiet jaunus attēlus no savas digitālās kameras no SD kartes uz datoru.

Situācija:

Katru reizi, kad man bija jauni attēli, ko lejupielādēt savā datorā, es rīkojos šādi:

1. Atveriet direktoriju, kurā man ir attēli, kas klasificēti apakšdirektorijos.

2. Izveidojiet jaunu apakšdirektoriju ar pašreizējā datuma nosaukumu formātā yy.mm.dd

3. Pārejiet uz apakšdirektoriju, kas izveidots iepriekšējo reizi, un skatiet, kurš attēls ir pēdējais saglabāts.

4. Kopējiet jaunos attēlus no SD kartes jaunizveidotajā direktorijā.

Tas aizņem ne vairāk kā minūti, taču procesu ir vieglāk veikt, vienkārši ievietojot karti.

Man ir jāizmanto karte, jo es nevaru tieši pārsūtīt attēlus no kameras, izmantojot USB, jo nav Linux draiveru (kā vienmēr notiek ...)

Risinājums:

Izveidojiet bash skriptu, kas veic šādas darbības:

1. Pārbaudiet, startējot, vai ir ievietota SD karte. Pretējā gadījumā tas beidzas.

2. Pārejiet uz galveno attēlu direktoriju un atrodiet pēdējo. Saglabājiet savu vārdu mainīgajā.

3. Salīdziniet pašreizējo datumu ar pēdējo direktoriju, ja tie atšķiras, izveidojiet jaunu direktoriju ar pašreizējā datuma nosaukumu "yy.mm.dd" formātā.

4. Pārejiet uz pēdējo direktoriju (nevis jauno, bet vecāku) un saglabājiet mainīgā lielumā pēdējā faila, kas pārsūtīts iepriekšējo reizi, nosaukumu.

Šajā solī ir jāfiltrē faila nosaukums, lai to tuvākajā nākotnē varētu salīdzināt ar kartē esošajiem jaunajiem failiem. Failiem ir šāds formāts: xxx_xxxx.eee Kur: x = cipars no 0 līdz 9 un eee = paplašinājums (JPG, MOV). Piemēram: 100_5684.JPG, 100_5699.MOV. Pēc filtra nosaukums paliek xxxxxxx Tāpēc iepriekš minētajā piemērā mums būtu: 1005684, 1005699.

Tā kā direktorijā var būt cita veida faili vai mainīti nosaukumi, tiek izmantots filtrs.

5. Pārvietojieties uz karti un filtrējiet failus tāpat kā iepriekšējā punktā.

6. Salīdziniet kartē esošos failus ar mainīgo, kas satur pēdējo pārsūtīto failu (4. punkts), un kopējiet nosauktos failus jaunizveidotajā direktorijā lielāks par mainīgo. (tā kā nosaukumi ir tikai skaitļi).

7. Ar failu pārvaldnieku atveriet direktoriju, kurā ir jaunie attēli.

Tālāk es jums parādīšu skriptu ar komentāriem, kas izskaidro tā darbību. Es paskaidroju, ka neesmu programmētājs, un tas man sagādāja vairākas galvassāpes, līdz es to sāku darboties, it īpaši, kad man bija jāfiltrē cilnes "par" nosaukumi.

#! / bin / bash ### --- PĀRliecinieties, vai SD ir uzstādīts --- ### SD = / media / KODAK / DCIM / 100Z8612 ja [[-d $ SD]]; tad ### --- CREATE DIRECTORY --- ### # Izlasiet attēlu direktoriju un izveidojiet citu ar # pašreizējā datuma un atļauju 755 nosaukumu, ja tāda nav. cd ~ / Pictures / kodak ULTDIR = `ls -1 | tail -n1` # pēdējais direktorijs sarakstā. DATE = `datums +% y.% M.% D` # Pašreizējais datums GG.MM.DD formātā, ja [" $ LASTDIR "! =" $ DATE "]; tad mkdir -vm 755`date +% y.% m.% d` # izveidot direktoriju ar pašreizējo datumu fi ### --- SKATĪT PĒDĒJO $ ULTDIR DATU --- ### cd $ ULTDIR ULTIMG = `ls - 1 [0-9] [0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]. [JM] [PO] [GV] | aste -n1 | cut -c1-3,5-8` # skatiet pēdējo attēlu ar nosaukumu xxx_XXXX.eee .eee = faila paplašinājums (JPG vai MOV) # Lai nodrošinātu, ka skripts darbojas pēc tā izpildes: # 100_9999.eee -> 101_0000. eee un nav kļūdu # CUT tā, lai tas būtu xxxXXXX formātā ### --- PĀRVIETOŠANĀS UZ PĒDĒJO SARAKSTA DIREKTORU --- ### # VAI Nesen izveidoto, ja tiktu izveidots # cd .. ULTDIR = `ls -1 | tail -n1` # atkal iet, jo pretējā gadījumā tas aizņem iepriekšējo if cd / media / KODAK / DCIM / 100Z8612 ### --- FILTER failus SD --- ### FILTER = `ls -1 [ 0 -9] [0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]. [JM] [PO] [GV] "### - - Salīdziniet jaunās datnes ar nosaukumu, kas ir lielāks par pēdējo sagriezts -c1-3,5-8` #Cut nosaukums, ja [["$ ULTIMG" -lt "$ N"]]; tad cp $ I ~ / Pictures / kodak / $ ULTDIR fi taisīts mēnesī ~ / Pictures / kodak / $ ULTDIR #Atveriet jauno direktoriju ar Thunar else exit 0 fi exit 0

Visbeidzot, lai tas darbotos, es to pievienoju Xfce izvēlnē esošajai lietojumprogrammai "Removable Drives and Media"

Iestatījumi → Xfce 4 iestatījumu pārvaldnieks → Noņemamie diski un multivide → Kameras

izmantojot opciju importa attēls. Ievietojot karti, dialoglodziņš jautā, vai es gribu importēt attēlus. Pieņemot, skripts tiek izpildīts.

Nu tas tā. Atvainojiet par teksta nesakārtotību, tas ir mans pirmais ieraksts, un es nezinu, kā skriptu sastādīt tabulās, kad to rediģēju. Es ceru, ka kādam ir noderīgi vismaz radīt ideju un pielāgot to katram konkrētajam gadījumam.

Es nedevu licenci, jo neesmu sevi labi informējis par katru GPL versiju, taču viņiem ir tiesības to kopēt un modificēt. Un nevilcinieties pateikt, kā to varētu uzlabot vai ja ir citi veidi, kā to izdarīt, bet vieglāk.

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Percaff_TI99 teica

    Ļoti interesants Joaquín, laba ideja ir augšupielādēt skriptu pastā, kur ir vieglāk kopīgot kodu, un, kā jūs sakāt, to var pielāgot citām vajadzībām, un cilvēks iemācās mazliet vairāk izmantot bash.

    Sveicieni!

    1.    Joaquin teica

      Gatavs, pievienots http://paste.desdelinux.net/4737
      Paldies!

  2.   vr_rv teica

    Kopējot fotoattēlu, kas jau atrodas direktorijā, tas nenorāda, ka tāds jau ir, un dod iespēju to nomainīt vai nekopēt?

    Jebkurā gadījumā tas ir ļoti noderīgi, jo tas visu dara automātiski

    1.    Joaquin teica

      Sveiki. Tas faktiski nekopē atkārtotus attēlus, tos vienkārši ignorē. Ideja bija tieši kopēt jaunos failus bez lietotāja mijiedarbības. Turklāt, ja vien attēlus nepievienojat vairāk nekā vienu reizi dienā, skripts kopē jaunos failus jaunā direktorijā. Es īsi paskaidroju:

      Šodien ir 10. gada 03. oktobris. Es izveidoju direktoriju ar nosaukumu 13/13.03.10/100 un iekopēju dažus attēlus vai videoklipus (MOV): 4440_100.JPG, 4441_100.JPG, 4442_100.MOV, 4445_XNUMX.JPG
      (ar kameru tika izdzēsti trūkstošie 4443 un 4444, pēdējais ir 4445).

      Tad pieņemsim, ka es izmantoju skriptu 01., Un kartē ir jauni attēli. Skripts izveido direktoriju ar nosaukumu 04 un jauno attēlu / videoklipu iekšpusē, kuru nosaukums ir lielāks par "13"; jo tas lasa direktoriju 13.04.01 un pēdējais attēls ir 4445_13.03.10.JPG. Ja tajā pašā dienā es atkārtoti palaidu skriptu ar jauniem kartes attēliem, tie tiek pievienoti direktorijai 100. Neviens netiek pārrakstīts.

      Es ceru, ka esmu mazliet precizējis savu ideju 🙂

  3.   Manuti teica

    Un jūs nezināt Rapid Photo Downloader? Es domāju, ka tas dara visu to un vēl vairāk.

    1.    Black kungs teica

      Lieta ir tāda, ka izdilis puisis to izdarīja pats, es domāju, ka viņš būtu izklaidējies, un tas var kalpot kādam citam

    2.    Joaquin teica

      Sveiki. Es to nezināju, un tas šķiet labi no tā, ko redzēju internetā, bet patiesībā scenārijs lieliski izpilda man nepieciešamo; kas ir ievietot karti un visi faili tiek automātiski nokopēti.

      Tas man arī palīdzēja uzzināt nedaudz vairāk, jo acīmredzot tas nedarbojās pirmo reizi; Radās kļūdas, un jūs no tām daudz mācāties.

      Es nedomāju parādīt skriptu, lai citiem atrisinātu problēmas, ir tādas lietojumprogrammas kā jūsu pieminētās, kas ir vispārīgākas. Es to kopīgoju, lai jūs lasītu un kā atsauci izveidotu jaunas lietas, izmantojot cilpas (šajā gadījumā "par") un regulāras izteiksmes (mainīgie "ULTIMG" un "FILTER" skriptā)

  4.   kodelab teica

    Tas šķiet noderīgi, es to paturēju gadījumā, ja man to kādreiz vajag. Paldies.

    1.    Joaquin teica

      Paldies!

  5.   bez nosaukuma teica

    bet tam mums jau ir grsync

    1.    Joaquin teica

      Jā, bet es domāju, ka rsync vairāk izmanto rezerves kopijām. Es nekad to neesmu skatījies, bet tā ir programma, kas mums būtu jāņem vērā un jāmācās no mums visiem.

      Es nezināju, ka rsync ir grafisks interfeiss.

  6.   pēdējais jauniņais teica

    Oho, kods man šķiet ļoti interesants, ļoti noderīgs. tā turpini. 😀
    Es to paturēšu, ja man tas būs vajadzīgs.

    Sveicieni.

    1.    Joaquin teica

      Paldies!.