Script Bash: kopiu novajn bildojn de SD al komputilo

Foje ni bezonas plenumi ripetajn taskojn en nia komputilo, kiuj kun la tempo fariĝas tedaj. En iuj kazoj ni povas faciligi nian laboron uzante skriptojn, kiuj funkcias por ni.

Hodiaŭ mi skribas por montri al vi bash-skripton, kiu solvis bezonon: kopii novajn bildojn de mia cifereca fotilo de SD-karto al la komputilo.

Situacio:

Ĉiufoje, kiam mi havis novajn bildojn por elŝuti al mia komputilo, mi farus la jenon:

1. Malfermu la dosierujon, kie mi havas la bildojn klasifikitajn en subdosierujoj.

2. Kreu novan subdosierujon kun la nomo de la aktuala dato, en formato yy.mm.dd

3. Movu vin al la subdosierujo kreita la antaŭan fojon kaj vidu, kio estas la lasta bildo konservita.

4. Kopiu la novajn bildojn de la SD-karto al la nove kreita dosierujo.

Ĉi tio daŭras ne pli ol minuton, sed estas pli facile fari la procezon nur enmetante la karton.

Mi devas uzi la karton, ĉar mi ne povas rekte transdoni la bildojn de la fotilo per USB, ĉar ne ekzistas Linuksaj peliloj (kiel ĉiam okazas ...)

Solvo:

Kreu bash-skripton, kiu faras jenon:

1. Kontrolu ĉe la ekfunkciigo se la SDa karto estas muntita. Alie ĝi finiĝas.

2. Iru al la ĉefa dosierujo de bildoj kaj trovu la lastan. Konservu vian nomon en variablo.

3. Komparu la nunan daton kun la lasta dosierujo, se ili malsamas, kreu novan adresaron kun la nomo de la aktuala dato en la formato "yy.mm.dd".

4. Movu vin al la lasta dosierujo (ne la nova, sed pli malnova) kaj konservu en variablo la nomon de la lasta dosiero transdonita la antaŭan fojon.

En ĉi tiu paŝo necesas filtri la nomon de la dosiero por povi kompari ĝin kun la novaj dosieroj sur la karto en proksima estonteco. La dosieroj havas la jenan formaton: xxx_xxxx.eee Kie: x = cifero 0 ĝis 9 kaj eee = etendo (JPG, MOV). Ekzemple: 100_5684.JPG, 100_5699.MOV. Post la filtrilo, la nomo restas xxxxxxx Tial, en la supra ekzemplo, ni havus: 1005684, 1005699.

Ĉar la dosierujo povas enhavi aliajn specojn de dosieroj aŭ kun ŝanĝitaj nomoj, la filtrilo estas uzata.

5. Movu vin al la karto kaj filtru la dosierojn kiel en la antaŭa punkto.

6. Komparu la dosierojn sur la karto kun la variablo kiu enhavas la lastan dosieron transdonitan la antaŭan fojon (punkto 4) kaj kopiu la nomitajn dosierojn en la nove kreitan dosierujon. pli granda ol la variablo. (ĉar nomoj estas nur nombroj).

7. Malfermu la dosierujon enhavantan la novajn bildojn per la dosieradministrilo.

Poste mi montras al vi la skripton kun komentoj, kiuj klarigas kiel ĝi funkcias. Mi klarigas, ke mi ne estas programisto kaj tio donis al mi plurajn kapdolorojn ĝis mi funkciigis ĝin, precipe kiam mi devis filtri la nomojn por la buklo "por".

#! / bin / bash ### --- VERIFI SE SD ESTAS MONTA --- ### SD = / media / KODAK / DCIM / 100Z8612 if [[-d $ SD]]; tiam ### --- KREU ADREKTORON --- ### #Legu dosierujon kaj kreu alian kun la nomo de la # aktuala dato kaj permesoj 755 se ĝi ne ekzistas. cd ~ / Pictures / kodak ULTDIR = `ls -1 | vosto -n1` # lasta dosierujo en la listo. DATE = `dato +% y.% M.% D` # Nuna dato en YY.MM.DD-formato se [" $ LASTDIR "! =" $ DATE "]; tiam mkdir -vm 755`dato +% y.% m.% d` # kreu dosierujon kun aktuala dato fi ### --- VIDU LAST DOSIERON DE $ ULTDIR --- ### cd $ ULTDIR ULTIMG = `ls - 1 [0-9] [0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]. [JM] [PO] [GV] | vosto -n1 | cut -c1-3,5-8 `# vidu la lastan bildon kun nomo xxx_XXXX.eee .eee = dosieretendaĵo (JPG aŭ MOV) # Por certigi, ke la skripto funkcias post kiam ĝi plenumiĝos: # 100_9999.eee - > 101_0000.eee kaj estas neniuj eraroj # CUT tiel ke ĝi estas en xxxXXXX formato ### --- MOVU AL LA LASTA ADRESARO DE LA LISTO --- ### # A THE LA LASENTE KREITA, SE # CD estis KREITA .. ULTDIR = `ls -1 | vosto -n1` # iras denove ĉar alie ĝi prenas la antaŭan ULTDIR de la if cd / media / KODAK / DCIM / 100Z8612 ### --- FILTER the files in SD --- ### FILTER = `ls -1 [0 -9] [0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]. [JM] [PO] [GV] `### - - KOMPARU NOVajn dosierojn kun nomo pli granda ol la lasta --- ### por I en $ FILTER do N = `echo $ I | tranĉi -c1-3,5-8` #Tranĉi nomon se [["$ ULTIMG" -lt "$ N"]]; tiam cp $ I ~ / Pictures / kodak / $ ULTDIR fi done thunar ~ / Pictures / kodak / $ ULTDIR # Malfermu la novan dosierujon kun Thunar else exit 0 fi exit 0

Fine por funkciigi ĝin, mi aldonis ĝin al la programo "Forpreneblaj Diskoj kaj Amaskomunikiloj" de Xfce en la menuo

Agordoj → Agordadministrilo de Xfce 4 → Forigeblaj Diskoj kaj Mediaĵoj → Fotiloj

uzante la opcion importi bildon. Kiam mi enmetas la karton, dialogujo demandas, ĉu mi volas importi la bildojn. Akceptinte, la skripto plenumiĝas.

Nu jen. Pardonu la malordecon de la teksto, ĝi estas mia unua afiŝo kaj mi ne scias kiel entabeligi la skripton redaktante ĝin. Mi esperas, ke ĝi utilas al iu almenaŭ havi ideon kaj adapti ĝin al ĉiu aparta kazo.

Mi ne licencis ĉar mi ne bone informis min pri ĉiu versio de la GPL, sed ili rajtas kopii kaj modifi ĝin. Kaj bonvolu diri, kiel ĝi povus esti plibonigita aŭ se ekzistas aliaj manieroj fari la samon, sed pli facile.

La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

13 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   Percaff_TI99 diris

    Tre interesa Joaquín, bona ideo estas alŝuti la skripton en la paston, kie estas pli facile dividi la kodon, kaj kiel vi diras, ĝi povas esti adaptita al aliaj bezonoj kaj oni lernas uzi bash iomete pli.

    Saluton !!!

    1.    Joakimo diris

      Farita, aldonita en http://paste.desdelinux.net/4737
      Gracias!

  2.   vr_rv diris

    Kopiante foton jam en la dosierujo, ĝi ne indikas, ke ekzistas jam unu, kaj donas al vi la eblon anstataŭigi ĝin aŭ ne kopii ĝin?

    Ĉiuokaze ĝi estas tre utila, ĉar ĝi faras ĉion aŭtomate

    1.    Joakimo diris

      Saluton. Ĝi fakte ne kopias ripetajn bildojn, sed nur ignoras ilin. La ideo estis ĝuste kopii la novajn dosierojn sen bezono de uzanto-interago. Ankaŭ, krom se vi aldonas bildojn pli ol unufoje tage, la skripto kopias la novajn dosierojn al nova adresaro. Mi klarigas koncize:

      Hodiaŭ estas 10/03/13, mi kreas dosierujon nomatan 13.03.10/100/4440 kaj kopias iujn bildojn aŭ filmetojn (MOV) interne: 100_4441.JPG, 100_4442.JPG, 100_4445.MOV, XNUMX_XNUMX.JPG
      (La mankantaj 4443 kaj 4444 estis forigitaj per la fotilo, la lasta estas 4445).

      Tiam supozu, ke mi uzas la skripton la 01/04/13 kaj havas novajn bildojn sur la karto. La skripto kreas dosierujon nomatan 13.04.01 kaj ene de la novaj bildoj / filmetoj kies nomo estas pli granda ol "4445"; ĉar ĝi legas la adresaron 13.03.10 kaj la lasta bildo estas 100_4445.JPG. Se mi reruligas la skripton kun novaj bildoj de la karto tiutage, ili aldoniĝas al la 13.04.01-adresaro. Neniuj estas anstataŭigitaj.

      Mi esperas, ke mi iomete klarigis mian ideon 🙂

  3.   Manuti diris

    Kaj vi ne scias Rapid Photo Downloader? Mi pensas, ke ĝi faras ĉion de tio kaj pli.

    1.    Sinjoro Nigro diris

      La afero estas, ke la magra viro mem faris ĝin, li amuziĝus, mi supozas, kaj ĝi povas servi al iu alia

    2.    Joakimo diris

      Saluton. Mi ne sciis ĝin kaj ŝajnas bone laŭ tio, kion mi vidis en la interreto, sed efektive la skripto perfekte plenumas tion, kion mi bezonas; kiu estas enigi la karton kaj kopii ĉiujn dosierojn aŭtomate.

      Ĝi ankaŭ helpis min lerni iom pli, ĉar evidente ĝi ne funkciis la unuan fojon; Eraroj okazis kaj multo estas lernita de ili.

      Mi ne intencis montri la skripton por solvi problemojn por aliaj, ekzistas programoj kiel tiuj, kiujn vi mencias, pli ĝeneralaj. Mi dividis ĝin por vi legi kaj kiel referenco por krei novajn aferojn uzante buklojn (ĉi-kaze "por") kaj regulajn esprimojn (variabloj "ULTIMG" kaj "FILTER" en la skripto)

  4.   kodelab diris

    Ŝajnas utila, mi konservas ĝin por se mi bezonos ĝin iam. Dankon.

    1.    Joakimo diris

      Gracias!

  5.   nenomita diris

    sed por tio ni jam havas grsync

    1.    Joakimo diris

      Jes, sed mi pensas, ke rsync estas pli uzata por sekurkopioj. Mi neniam rigardis ĝin, sed ĝi estas aplikaĵo, kiun ni devas konsideri kaj lerni de ni ĉiuj.

      Mi ne sciis, ke ekzistas grafika interfaco por rsync.

  6.   lasta novulo diris

    Ve, mi trovas la kodon tre interesa, tre utila. daŭrigu ĝin. 😀
    Mi konservos ĝin, se mi bezonos ĝin.

    Salutojn.

    1.    Joakimo diris

      Dankon!.