daily pastebin goal
21%
SHARE
TWEET

Batch rename files (graphic interface)

tolikpunkoff Jun 25th, 2016 66 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/sh
  2. #
  3. # Пакетное переименование файлов
  4. # Batch rename files
  5. # version: 1.0.0
  6. #
  7. # RENAME(){
  8. #       DIRNAME1        Каталог с файлами
  9. #       NEWNAME         Новый префикс
  10. #       CURRENTNAME     Текущий префикс
  11. #       NUMBER          Нумерация файлов от
  12. #       FOLDER          Путь сохранения
  13. # }
  14. # export -f RENAME
  15. #
  16. # REPLACE(){
  17. #       DIRNAME2        Каталог с файлами
  18. #       F1              Найти (что заменить)
  19. #       R1              Заменить (на что заменить)
  20. #       H1              Удалить специальные символы и знаки
  21. #       S1              Исключить пробелы (склейка)             
  22. #       P1              Заменить пробелы на 0x5F (hex)
  23. #       P2              Нижний регистр в расширении файла
  24. #       P3              Нижний регистр в имени файла
  25. #       T1              Транслит
  26. # }
  27. # export -f REPLACE
  28. #
  29.  
  30. RENAME(){  
  31.     if [ -z "$DIRNAME1" ]; then
  32.         Xdialog --title " " --msgbox "$(gettext 'Не указан каталог с файлами!')" 0 0  
  33.         exit 1
  34.     fi     
  35.     if [ -z "$NEWNAME" ]; then
  36.         Xdialog --title " " --msgbox "$(gettext 'Не указан новый префикс!')" 0 0  
  37.         exit 1
  38.     fi
  39.     if [ "$NUMBER" == "" ]; then NUMBER=1000; fi       
  40.     if [ "$FOLDER" != "" ]; then mkdir "$FOLDER"/"$NEWNAME"; fi
  41.  
  42. i=$NUMBER
  43. cd "$DIRNAME1"
  44. ls "$DIRNAME1" | while read x
  45. do
  46.     if [ -f "$x" ]; then
  47.         if [ "$CURRENTNAME" != "" ]; then
  48.                     nname=`echo $x | sed -e s/"$CURRENTNAME"/"$NEWNAME"/g`
  49.                     nname=`echo ${nname%.*}`
  50.             else    nname="$NEWNAME$i"
  51.         fi
  52.         if [ -z "$FOLDER" ]; then
  53.                 if ! [ -f "$nname".`echo ${x##*.}` ]; then
  54.                     mv "$x" "$nname".`echo ${x##*.}`
  55.                 fi
  56.             else    cp "$x" "$FOLDER/$NEWNAME/$nname".`echo ${x##*.}`
  57.         fi
  58.         i=$(($i+1))
  59.     fi
  60. done
  61. }
  62. export -f RENAME
  63.  
  64. REPLACE(){ 
  65.     if [ -z "$DIRNAME2" ]; then
  66.         Xdialog --title " " --msgbox "$(gettext 'Не указан каталог с файлами!')" 0 0  
  67.         exit 1
  68.     fi  
  69.     if [ -z "$F1" ]; then F1=""; fi
  70.     if [ -z "$R1" ]; then R1="" ;fi
  71.        
  72. FROM="ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЗИЙКЛМНОПРСТУФХЦЫ"        
  73. TOOO="abcdefghijklmnopqrstuvwxyzабвгдезийклмнопрстуфхцы"
  74. cd "$DIRNAME2"
  75. ls "$DIRNAME2" | while read x
  76. do
  77.     nname=`echo ${x%.*}`
  78.     ext=`echo ${x##*.}`
  79.     if [ -f "$x" ]; then
  80.         if [[ -n "$F1" && -n "$R1" ]]; then
  81.             nname=`echo $nname | sed -e s/"$F1"/"$R1"/g`
  82.         fi
  83.         if [[ -n "$F1" && -z "$R1" ]]; then
  84.             nname=`echo $nname | sed -e s/"$F1"//g`
  85.         fi 
  86.         if [ "$S1" == "true" ]; then
  87.             nname=`echo $nname | sed 's/[[:space:]]//g'`
  88.         fi
  89.         if [ "$P3" == "true" ]; then
  90.             nname=`echo $nname | sed -e y/"$FROM"/"$TOOO"/`
  91.         fi
  92.         if [ "$P2" == "true" ]; then
  93.             ext=`echo $ext | sed -e y/"$FROM"/"$TOOO"/`
  94.         fi 
  95.         if [ "$P1" == "true" ]; then
  96.             nname=`echo $nname | sed 's/[[:space:]]/_/g'`
  97.             nname=`echo $nname | sed s/'_\{2,\}'/'_'/g`
  98.         fi
  99.         if [ "$T1" == "true" ]; then
  100.             translit_file_name=`echo $nname | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"`
  101.             translit_file_name=`echo $translit_file_name | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/"`
  102.             translit_file_name=${translit_file_name//ч/ch};
  103.             translit_file_name=${translit_file_name//Ч/CH} translit_file_name=${translit_file_name//ш/sh};
  104.             translit_file_name=${translit_file_name//Ш/SH} translit_file_name=${translit_file_name//ё/jo};
  105.             translit_file_name=${translit_file_name//Ё/JO} translit_file_name=${translit_file_name//ж/zh};
  106.             translit_file_name=${translit_file_name//Ж/ZH} translit_file_name=${translit_file_name//щ/sh};
  107.             # translit_file_name=${translit_file_name///SH\'}
  108.                                                            translit_file_name=${translit_file_name//э/je};
  109.             translit_file_name=${translit_file_name//Э/JE} translit_file_name=${translit_file_name//ю/ju};
  110.             translit_file_name=${translit_file_name//Ю/JU} translit_file_name=${translit_file_name//я/ja};
  111.             translit_file_name=${translit_file_name//Я/JA} translit_file_name=${translit_file_name//ъ/};
  112.             translit_file_name=${translit_file_name//ъ/} translit_file_name=${translit_file_name//ь/};
  113.             translit_file_name=${translit_file_name//Ь/}
  114.             nname=$translit_file_name
  115.         fi     
  116.         if ! [ -f "$nname"."$ext" ]; then
  117.             mv "$x" "$nname"."$ext"
  118.         fi
  119.     fi
  120. done
  121. }
  122. export -f REPLACE
  123.    
  124. export PROG='
  125. <window title="Пакетное переименование файлов 1.0.0">
  126. <vbox>
  127. <notebook labels="Переименовать|Заменить|Помощь">
  128. <vbox>
  129.       <hbox>
  130.       <frame Выберите каталог с файлами>
  131.        <hbox>
  132.          <entry accept="directory"><variable>DIRNAME1</variable></entry>
  133.          <button>
  134.            <input file stock="gtk-open"></input>
  135.            <action type="fileselect">DIRNAME1</action>
  136.          </button>
  137.        </hbox>
  138.       </frame>
  139.       </hbox>
  140.       <frame Новый префикс                       Текущий префикс>
  141.        <hbox>
  142.          <entry>
  143.            <variable>NEWNAME</variable>
  144.          </entry>
  145.          <entry>
  146.            <variable>CURRENTNAME</variable>
  147.          </entry>
  148.        </hbox>    
  149.        <text xalign="0">
  150.          <label>При наличии данных в поле "Текущий префикс" поле "Нумерация файлов от" из алгоритма переименования исключается. Используйте для сохранения оригинальной нумерации фотоснимков.</label>
  151.        </text>    
  152.      </frame>
  153.      <frame Нумерация файлов от>
  154.        <hbox>
  155.          <entry>
  156.            <variable>NUMBER</variable>
  157.            <default>1000</default>
  158.          </entry>
  159.        </hbox>        
  160.      </frame>
  161.       <frame Путь сохранения>
  162.        <hbox>
  163.          <entry accept="directory"><variable>FOLDER</variable></entry>
  164.          <button>
  165.            <input file stock="gtk-open"></input>
  166.            <action type="fileselect">FOLDER</action>
  167.          </button>
  168.         </hbox>
  169.        <text xalign="0">
  170.          <label>Для пакетного переименования файлов, оставьте поле пустым, либо, укажите полный путь к другому каталогу, для сохранения в нем, переименованых копий.</label>
  171.        </text>
  172.       </frame>
  173.       <hbox>  
  174.         <button>
  175.             <label>Переименовать</label>
  176.             <action>RENAME</action>
  177.             <action>Clear:RENAME</action>
  178.         </button>
  179.         <button>
  180.             <label>Выход</label>
  181.         </button>
  182.       </hbox>
  183.  </vbox>
  184.  <vbox>
  185.     <hbox>
  186.       <frame Выберите каталог с файлами>
  187.        <hbox>
  188.          <entry accept="directory"><variable>DIRNAME2</variable></entry>
  189.          <button>
  190.            <input file stock="gtk-open"></input>
  191.            <action type="fileselect">DIRNAME2</action>
  192.          </button>
  193.        </hbox>
  194.       </frame>
  195.       </hbox>
  196.       <frame Найти                                       Заменить>
  197.        <hbox>
  198.          <entry>
  199.            <variable>F1</variable>
  200.          </entry>
  201.          <entry>
  202.            <variable>R1</variable>
  203.          </entry>
  204.        </hbox>    
  205.        <text xalign="0">
  206.          <label>Если в поле "Заменить" отсутствует элемент замены, производится склейка.</label>
  207.        </text>          
  208.        </frame>  
  209.        <frame Дополнительно>
  210.        <checkbox>
  211.            <label>удалить специальные символы и знаки</label>
  212.            <variable>H1</variable>
  213.            <default>no</default>
  214.        </checkbox>      
  215.        <checkbox>
  216.            <label>исключить пробелы (склейка)</label>
  217.            <variable>S1</variable>
  218.            <default>no</default>
  219.        </checkbox>  
  220.        <checkbox>
  221.            <label>заменить пробелы на 0x5F (hex)</label>
  222.            <variable>P1</variable>
  223.            <default>no</default>
  224.        </checkbox>
  225.        <checkbox>
  226.            <label>нижний регистр в расширении файла</label>
  227.            <variable>P2</variable>
  228.            <default>no</default>
  229.        </checkbox>    
  230.        <checkbox>
  231.            <label>нижний регистр в имени файла</label>
  232.            <variable>P3</variable>
  233.            <default>no</default>
  234.        </checkbox>  
  235.        <checkbox>
  236.            <label>транслит</label>
  237.            <variable>T1</variable>
  238.            <default>no</default>
  239.        </checkbox>      
  240.      </frame>    
  241.      <hbox>  
  242.         <button>
  243.             <label>Заменить</label>
  244.             <action>REPLACE</action>
  245.             <action>Clear:REPLACE</action>
  246.         </button>
  247.         <button>
  248.             <label>Выход</label>
  249.         </button>
  250.        </hbox>  
  251.  </vbox>  
  252.  <vbox>
  253.   <text space-fill="true">
  254.   <label>"   "</label>
  255.   </text>
  256.   <text space-fill="true">
  257.   <label>GTK 3</label>
  258.   </text>
  259.   <text space-fill="true">
  260.   <label>Пакетное переименование файлов</label>
  261.   </text>
  262.   <text space-fill="true">
  263.   <label>Batch rename files</label>
  264.   </text>
  265.   <text space-fill="true">
  266.   <label>версия 1.0.0</label>
  267.   </text>  
  268.   <text space-fill="true">
  269.   <label>"   "</label>
  270.   </text>    
  271.   <text space-fill="true">
  272.   <label>Скрипт предназначен для пакетного переименования</label>
  273.   </text>  
  274.   <text space-fill="true">
  275.   <label>графических файлов с цифровых фотокамер.</label>
  276.   </text>    
  277.   <text space-fill="true">
  278.   <label>Имеет ряд функций, позволяющих использование</label>
  279.   </text>    
  280.   <text space-fill="true">
  281.   <label>в других, отличных от заявленных выше целях.</label>
  282.   </text>
  283.   <text space-fill="true">
  284.   <label>" "</label>
  285.   </text>
  286.  </vbox>
  287. </notebook>
  288. </vbox>
  289. </window>
  290. '
  291.  
  292. gtkdialog3 --program PROG > /dev/null
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top