Bash / Shell

Массовые операции с файлами

Algonexys · 07.08.2026 · 👁 0

Безопасный обход файлов с пробелами в именах, переименование, поиск и замена по содержимому.

Код

# Обход с учётом пробелов и переводов строк в именах
find . -type f -name '*.log' -print0 | while IFS= read -r -d '' file; do
    echo "Обрабатываю: $file"
    gzip -9 "$file"
done

# Массовое переименование: photo1.JPG → photo1.jpg
for file in *.JPG; do
    [[ -e "$file" ]] || continue          # если совпадений нет
    mv -- "$file" "${file%.JPG}.jpg"
done

# Поиск и замена во всех файлах проекта (с резервной копией)
grep -rl --include='*.py' 'OLD_NAME' . \
    | xargs sed -i.bak 's/OLD_NAME/NEW_NAME/g'

# Самые большие файлы и каталоги
du -ah . | sort -rh | head -20
find . -type f -size +100M -exec ls -lh {} \; | awk '{print $5, $9}'

# Удалить пустые каталоги и файлы старше 30 дней
find /tmp/cache -type f -mtime +30 -delete
find /tmp/cache -type d -empty -delete