mmv

10 bejegyzés megtekintése - 11-20 / 54
  • Szerző
    Bejegyzés
  • #2060621
    pointux
    Felhasználó

      Sajnos rekurzívan volt egy kis hiba benne. Az ls nem útvonalat ad. (Most már jó, meg kipofoztam egy kicsit.)
      Valaki meg megcsinálhatná, hogy „*” patternre az eredeti kiterjesztést varázsolja oda, ne a „*”-ot. (Egyébként, hogy kell kiterjesztést másolni?)

      Code:
      #!/bin/bash

      LINE=””
      FILE=””

      A=”0″
      B=”0″
      C=”0″
      D=”0″

      DIR_SIGN=”false”
      LOCAL_DIR=””
      COMMAND=””
      PATTERN=”*”
      INPUT_DIR=”.”
      OUTPUT_DIR=”.”
      USAGE=”Usage: collect –command command [–input_dir dir] [–output_dir dir] [–pattern pattern]

      shorter form:
          –command -c
          –input_dir -i
          –output_dir -o
          –pattern -p

      For example:
          collect –command mv –input_dir „input dir” –output_dir out_dir –pattern .jpg
          collect -c mv –input_dir input_dir –output_dir out_dir –pattern image_”

      DO_COMMAND() {
      ls -1 -F -R | while read LINE; do
      DIR_SIGN=”false”
      DIR_TMP=`echo ${LINE} | grep „:”`

      if [ „${DIR_TMP}” != „” ]; then
      LOCAL_DIR=`echo ${LINE} | sed ‘s/.//’ | sed ‘s/://’`
      echo „”
      echo „search in directory: ${LOCAL_DIR}”
      DIR_SIGN=”true”;
      fi

      if [ „${DIR_SIGN}” == „false” ]; then
      if [ „${PATTERN}” == „*” ]; then
      FILE=`echo ${LINE} | grep -v „/” | sed ‘s/*//’ | sed ‘/^$/d’`
      else
      FILE=`echo ${LINE} | grep -v „/” | grep „${PATTERN}” | sed ‘s/*//’ | sed ‘/^$/d’`
      fi

      if [ „${FILE}” != „” ]; then
      A=$[$[A]+1]
      if [ $[A] -gt „9” ]; then
      A=”0″
      B=$[$[B]+1]
      fi
      if [ $[B] -gt „9” ]; then
      B=”0″
      C=$[$[C]+1]
      fi
      if [ $[C] -gt „9” ]; then
      C=”0″
      D=$[$[D]+1]
      fi

      ${COMMAND} „${INPUT_DIR}${LOCAL_DIR}/${FILE}” „${OUTPUT_DIR}/${DIR}picture_${D}${C}${B}${A}.${PATTERN}”
      fi
      fi

      done;
      }

      TEST() {
      if [ ${COMMAND} == „” ]; then
      echo „You must specify „command” with „–command” option”
      fi
      }

      if test $# -eq 0; then
      echo „${USAGE}” 1>&2
      exit 1
      fi

      while test $# -gt 0; do
      case „$1” in
      „–help”)
      echo „${USAGE}” 1>&2
      exit 1
        ;;
      „-h”)
      echo „${USAGE}” 1>&2
      exit 1
      ;;
      „–command”)
      shift
      COMMAND=”$1″
      ;;
      „-c”)
      shift
      COMMAND=”$1″
      ;;
      „–input_dir”)
      shift
      INPUT_DIR=”$1″
      ;;
      „-i”)
      shift
      INPUT_DIR=”$1″
      ;;
            „–output_dir”)
      shift
      OUTPUT_DIR=”$1″
      ;;
      „-o”)
      shift
      OUTPUT_DIR=”$1″
      ;;
      „–pattern”)
      shift
      PATTERN=”$1″
      ;;
      „-p”)
      shift
      PATTERN=”$1″
      ;;
      *)
      echo „${USAGE}” 1>&2
      exit 1
      ;;
      esac
      shift
      done

      TEST
      DO_COMMAND

      #2060622
      Gyuszk
      Felhasználó

        Pff. Ezzel csak bonyolódott számomra a probléma  :icon_neutral:

        #2060623
        pointux
        Felhasználó

          Mér’ már van hozzá beépített súgó is. (Egyébként nem mûködik?) Nálam speciel ment. Persze a lehetõségek száma végtelen. :)))
          Viszont a ls -I meg nem mûködik normálisan… ki kellett kerülni. (De nem baj, mert így többet tud.)

          #2060624
          csablak
          Felhasználó
            #2060625
            pointux
            Felhasználó

              (Még nem teljes, sajnos. Kéne egy kis gyors segítség. Aki tudja az elõzõ a kérdésemre a választ az  ne kíméljen.)
              ./collect -c mv -i ~/input_dir -o ~/ouput_dir -p jpg
              Ez most azt csinálja, hogy minden ~/input_dir könyvtárban és alkönyvtáraiban lévõ file-t – mely tartalmazza a „jpg” részletet (bárhol) áthelyezi picture_xxxx.jpg nevûre és behelyezi a ~/output_dir nevû könyvtárba.

              A parancs -cp is lehet. (echo-val pl. lehet figyelni, hogy mit csinál.)
              -i, vagy -o nem kötelezõ. Elhagyásával az aktuális könyvtárból/ba történik a parancs. (Egyébként nem kíméli saját magát sem! Tehát ne rakd az átnevezendõk közé!)

              Ha a

              Code:
              FILE=`echo ${LINE} | grep -v „/” | grep „${PATTERN}” | sed ‘s/*//’ | sed ‘/^$/d’`

              sort

              Code:
              FILE=`echo ${LINE} | grep -v „/” | grep „.${PATTERN}” | sed ‘s/*//’ | sed ‘/^$/d’`

              -re változtatod, akkor „.jpg”-t keres (tehát valószínû kitarjesztést).

              Pattern nélkül érvényes az összes bemeneti file-ra, viszont a kiterjesztés .* lesz, nem az eredeti.
              Ezt a

              Code:
              ${COMMAND} „${INPUT_DIR}${LOCAL_DIR}/${FILE}” „${OUTPUT_DIR}/${DIR}picture_${D}${C}${B}${A}.${PATTERN}”

              sor változtatásával lehet megoldani. Mihelyt megsúgja valaki, hogy hogy kell kiterjesztést másolni. (Vagy, majd késõbb megkeresem a netem. Legközelebb este… akkor majd folytatom a sriptet. Ha meg, majd tezsteltük és jól megy, akkor elmondom, hogy mi mit csinál.)

              „./renna -c mv -i /home/csablak/.próba/superfoto/konvert -o /home/csablak/.próba/superfoto/ide -p image_”
              Erre meg „image_” tartalmú file-t keres, amit valószínû nem talál. (A .-nak az elérési útvonalban szerepe van! Ha a próba nem egy rejtett file – tehát nem tartalmaz pontot -, akkor töröld!)

              #2060626
              csablak
              Felhasználó

                A .próba egy rejtett könyvtár.
                Vizsla találtam egy ilyet:
                http://www.icewalkers.com/Linux/Software/521850/BatRen.html

                Hátha ez segít nekünk.

                #2060627
                pointux
                Felhasználó

                  A miénk már többet tud. (Bár a létezik nem létezikkel nem törõdik, amíg az igen. Majd késõbb.)
                  Bár egy kissé bonyolult (inkább azt mondom célszerûtlen), úgyhogy, majd célszerûsíteni kell.

                  Egyelõre most ezt tudja:

                  Code:
                  USAGE=”Usage: collect –command „command [%s] [%d]” [–src_dir dir1:[dir2…]] [–dst_dir dir] [–dst_name name] [–pattern pattern] [–list_all] [–list_rec] [–num_size numeric_size]
                      –command   unix command
                        %s        source parameter of command
                        %d        destination parameter of command
                      –src_dir   source directory or directories
                      –dst_dir   destination directory
                      –dst_name  destination filename
                      –pattern   filter for source files (no joker chs. are available)
                      –list_all  include files with a name starting with ‘.’ in the listing
                      –list_rec  recursively list subdirectories encountered
                      –num_size  size of numeric string at the end of filename in char (upto 6, default is 4)

                    shorter form:
                      –command   -c
                      –src_dir   -s
                      –dst_dir   -d
                      –dst_name  -n
                      –pattern   -p
                      –list_all  -a
                      –list_rec  -R
                      –num_size  -e

                     For example:
                      collect -c cp -s src_dir1:src_dir2 -d out_dir -p .jpg -n image -R -e 6
                      collect -c mv -s src_dir -d dst_dir -p manual -n document_
                      collect -c „echo dest: %d  src: %s””

                  A legutóbbi változat…

                  #2060628
                  csablak
                  Felhasználó

                    Hi Vizsla!

                    Jelenleg erre a parancsra

                    ./collect -c cp -s /mnt/winswap/Temp/innen -d /mnt/winswap/Temp/ide -p .jpg -n picture_ -R -e 3

                    a következõ üzenetet kapom :

                    search in directory /mnt/winswap/Temp/innen/:
                    cp: `/mnt/winswap/Temp/ide/picture_001.jpg’: specified destination directory does not exist

                    #2060629
                    pointux
                    Felhasználó

                      „/mnt/winswap/Temp/ide” könyvtár nem létezik. Mindjárt módosítom, hogy hozza létre, ha nem létezik, mert a cp nem tudja létrehozni.

                      #2060630
                      pointux
                      Felhasználó

                        Persze, ez felvet mégtöbb problémát, mert mi van, ha létezik (vagy valamelyik tagja) és az file.  (Na, majd szép sorjában. :))

                      10 bejegyzés megtekintése - 11-20 / 54
                      • Be kell jelentkezni a hozzászóláshoz.