| 
#!/bin/bash
 | 
 | 
 | 
 | 
# rar
 | 
 | 
# find . -name "*.rar" -printf "%f\n" > file_list.tmp
 | 
 | 
 | 
 | 
# 7z
 | 
 | 
# find . -name "*.7z" -printf "%f\n" > file_list.tmp
 | 
 | 
 | 
 | 
sed -i -e 's/^/"/g' -e 's/$/"/g' file_list.tmp
 | 
 | 
 | 
 | 
mkdir origin/ converted/
 | 
 | 
function run_convert(){
 | 
 | 
    mkdir tmp1/
 | 
 | 
    f_in=$@
 | 
 | 
 | 
 | 
    # rar
 | 
 | 
    # f_out=$(echo ${f_in} | sed 's/\.rar/\.zip/g')
 | 
 | 
 | 
 | 
    # 7z
 | 
 | 
    # f_out=$(echo ${f_in} | sed 's/\.rar/\.zip/g')
 | 
 | 
 | 
 | 
    # rar 无密码
 | 
 | 
    # unrar x "${f_in}" tmp1
 | 
 | 
 | 
 | 
    # rar 有密码
 | 
 | 
    # password="password"
 | 
 | 
    # unrar x -p${password} "${f_in}" tmp1
 | 
 | 
 | 
 | 
    # 7z 无密码
 | 
 | 
    # 7z x -otmp1 "${f_in}"
 | 
 | 
 | 
 | 
    # 7z 有密码
 | 
 | 
    # password="password"
 | 
 | 
    # 7z x -otmp1 -p${password} "${f_in}"
 | 
 | 
 | 
 | 
    mkdir tmp2/
 | 
 | 
    find tmp1/ -name "*.png" -exec mv {} tmp2/ \;
 | 
 | 
    find tmp1/ -name "*.jpg" -exec mv {} tmp2/ \;
 | 
 | 
    find tmp1/ -name "*.jpeg" -exec mv {} tmp2/ \;
 | 
 | 
    find tmp1/ -name "*.gif" -exec mv {} tmp2/ \;
 | 
 | 
    cd tmp2/
 | 
 | 
    zip -r "../converted/${f_out}" *
 | 
 | 
    cd ../
 | 
 | 
    rm -r tmp1 tmp2
 | 
 | 
    mv "${f_in}" origin/
 | 
 | 
}
 | 
 | 
 | 
 | 
export -f run_convert
 | 
 | 
xargs -a file_list.tmp -n 1 bash -c 'run_convert "$@"' _
 | 
 | 
rm file_list.tmp
 |