Last active
          November 3, 2025 12:33 
        
      - 
      
 - 
        
Save strizhechenko/928073851fd9af4497207d63249061ed to your computer and use it in GitHub Desktop.  
    Скрипт для закидывания наиболее близких к оригиналу ромов на флэшку с anbernic.
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | #!/bin/bash | |
| set -euE | |
| ARCHIVE_DIR="$1" | |
| TARGET_DIR="$2" | |
| mkdir -p "$TARGET_DIR" | |
| # Это мои приоритеты, у вас могут быть свои, можно [T+Rus] на первое место поставить, например | |
| priorities=('(U) [!]' '(E) [!]' '[T+Eng]' '[!]') | |
| select_file() { | |
| for pattern in "${priorities[@]}"; do | |
| fgrep -m1 "$pattern" <<< "$1" && break | |
| done | |
| # Если ничего не попалось по шаблону пытаемся вообще без суффиксов | |
| fgrep -v '[' <<< "$1" && return 0 | |
| # Если и такого нет - первый попавшийся | |
| head -n1 <<< "$1" | |
| return 0 | |
| } | |
| for archive in "$ARCHIVE_DIR"*.7z; do | |
| filename="${archive##*/}" | |
| echo "Обработка: $filename" | |
| # Мне не интересны хаки и другие файлы кроме .nes. | |
| # Формат -slt даёт выхлоп Path = filename.nes (много строк). Нам интересны только filename. | |
| nes_files="$(7z l -slt "$archive" | grep "\.nes$" | grep -v "Hack" | awk -F ' = ' '{print $2}')" | |
| if [ "$(echo "$nes_files" | wc -l)" -eq 0 ]; then | |
| echo " ❌ В архиве нет подходящих .nes файлов" | |
| continue | |
| fi | |
| # Под регулярку priorities может попасть сразу несколько файлов. Берём первый из них. | |
| selected_file="$(select_file "$nes_files" | head -n1)" | |
| if [[ -z "${selected_file:-}" ]]; then | |
| echo " ❌ Не удалось выбрать файл в архиве: $archive" | |
| echo "$nes_files" | |
| exit 1 | |
| fi | |
| echo " ✅ Выбран файл: $selected_file" | |
| # Распаковываем сразу в пункт назначения | |
| 7z x -o"$TARGET_DIR" "$archive" "$selected_file" | |
| done | |
| echo "Done." | |
| exit 0 | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | #!/bin/bash | |
| set -euE | |
| ARCHIVE_DIR="$1" | |
| TARGET_DIR="$2" | |
| mkdir -p "$TARGET_DIR" | |
| # Это мои приоритеты, у вас могут быть свои, можно [T+Rus] на первое место поставить, например | |
| priorities=('(U) [!]' '(E) [!]' '[T+Eng]' '[!]') | |
| select_file() { | |
| for pattern in "${priorities[@]}"; do | |
| fgrep -m1 "$pattern" <<< "$1" && break | |
| done | |
| # Если ничего не попалось по шаблону пытаемся вообще без суффиксов | |
| fgrep -v '[' <<< "$1" && return 0 | |
| # Если и такого нет - первый попавшийся | |
| head -n1 <<< "$1" | |
| return 0 | |
| } | |
| for archive in "$ARCHIVE_DIR"*.7z; do | |
| filename="${archive##*/}" | |
| echo "Обработка: $filename" | |
| # Мне не интересны хаки и другие файлы кроме .gen | |
| # Формат -slt даёт выхлоп Path = filename.gen (много строк). Нам интересны только filename. | |
| gen_files="$(7z l -slt "$archive" | grep "\.gen$" | grep -v "Hack" | awk -F ' = ' '{print $2}')" | |
| if [ "$(echo "$gen_files" | wc -l)" -eq 0 ]; then | |
| echo " ❌ В архиве нет подходящих .nes файлов" | |
| continue | |
| fi | |
| # Под регулярку priorities может попасть сразу несколько файлов. Берём первый из них. | |
| selected_file="$(select_file "$gen_files" | head -n1)" | |
| if [[ -z "${selected_file:-}" ]]; then | |
| echo " ❌ Не удалось выбрать файл в архиве: $archive" | |
| echo "$gen_files" | |
| exit 1 | |
| fi | |
| echo " ✅ Выбран файл: $selected_file" | |
| # Распаковываем сразу в пункт назначения | |
| if [ "${DRY_RUN:-0}" != '1' ]; then | |
| 7z x -o"$TARGET_DIR" "$archive" "$selected_file" | |
| # anbernic ждёт .md файлов, а не .gen. Формат один, расширения два. Это не markdown. | |
| mv -v "$TARGET_DIR/$selected_file" "$TARGET_DIR/${selected_file%.gen}.md" | |
| fi | |
| done | |
| echo "Done." | |
| exit 0 | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment