Ответы пользователя по тегу bash
  • Как удалить все кроме одного файла в папке (bash)?

    TemaSM
    @TemaSM
    Fullstack, DevOps, InfSec
    #!/bin/bash
    
    set -e
    export LC_ALL=C
    export TZ=Europe/Moscow
    
    # папка с бэкапами
    backups_dir="/backups"
    # количество дней с момента создания файла/папки, после которого удалять бэкапы
    backups_expire_days=30
    # название файла (можно использовать маски), который нужно исключить из процесса удаления
    filename_to_exclude="myfile.bin"
    
    find "${backups_dir}/"* -ctime "+${backups_expire_days}" \( ! -name "${filename_to_exclude}" \) -exec rm -rf {} \;
    # можно подставлять сразу несколько название файлов, пример:
    # \( ! -name "myfile.bin" ! -name "*.log" \)

    ! Данный скрипт выполняет rm -rf, что опасно. Поэтому несколько раз перепроверьте, прежде чем выполнять в той или иной папке.
    Ответ написан
    5 комментариев