Найти в Дзене
bashninja | DevOps & SRE ⚙️

🚀 XARGS: ТВОЯ СУПЕРСИЛА В КОМАНДНОЙ СТРОКЕ

🚀 XARGS: ТВОЯ СУПЕРСИЛА В КОМАНДНОЙ СТРОКЕ! Привет, родные ! 👋 Сегодня разберем xargs — утилиту, которая превратит тебя из новичка в гуру bash! 🍔 ✨ ЧТО ЭТО ВООБЩЕ ТАКОЕ? xargs — это преобразователь stdin в аргументы командной строки. Проще говоря: Без xargs: echo "file1 file2" | rm ❌ (не работает!) С xargs: echo "file1 file2" | xargs rm ✅ (работает!) xargs берет то, что приходит из stdin и превращает в аргументы для следующей команды! 🔥 ОСНОВНЫЕ ФИШКИ ЗА 30 СЕКУНД 🙃 # Массовое удаление find . -name "*.tmp" | xargs rm # Параллельная загрузка xargs -P5 -n1 wget < urls.txt # Безопасно для файлов с пробелами find . -type f -name '*.mp3' -print0 | xargs -0 -I{} mv -- '{}' /music/ 💡 ПОПУЛЯРНЫЕ СЦЕНАРИИ 📁 РАБОТА С ФАЙЛАМИ 😮 # Поиск в куче файлов find /project -name '*.py' -print0 | xargs -0 grep -nH 'import pandas' # Архивирование найденного find . -type f -name '*.js' -print0 | tar --null -czf backup.tar.gz -T - # Массовое переименование find . -type f -name '*.jpg' -print0 | xargs -

🚀 XARGS: ТВОЯ СУПЕРСИЛА В КОМАНДНОЙ СТРОКЕ!

Привет, родные ! 👋 Сегодня разберем xargs — утилиту, которая превратит тебя из новичка в гуру bash! 🍔

✨ ЧТО ЭТО ВООБЩЕ ТАКОЕ?

xargs — это преобразователь stdin в аргументы командной строки.

Проще говоря:

Без xargs: echo "file1 file2" | rm ❌ (не работает!)

С xargs: echo "file1 file2" | xargs rm ✅ (работает!)

xargs берет то, что приходит из stdin и превращает в аргументы для следующей команды!

🔥 ОСНОВНЫЕ ФИШКИ ЗА 30 СЕКУНД 🙃

# Массовое удаление

find . -name "*.tmp" | xargs rm

# Параллельная загрузка

xargs -P5 -n1 wget < urls.txt

# Безопасно для файлов с пробелами

find . -type f -name '*.mp3' -print0 | xargs -0 -I{} mv -- '{}' /music/

💡 ПОПУЛЯРНЫЕ СЦЕНАРИИ

📁 РАБОТА С ФАЙЛАМИ 😮

# Поиск в куче файлов

find /project -name '*.py' -print0 | xargs -0 grep -nH 'import pandas'

# Архивирование найденного

find . -type f -name '*.js' -print0 | tar --null -czf backup.tar.gz -T -

# Массовое переименование

find . -type f -name '*.jpg' -print0 | xargs -0 -I{} mv -- '{}' '{}'.backup

⚡️ ПАРАЛЛЕЛЬНАЯ МОЩЬ 😏

# Конвертация изображений (4 потока!)

find . -type f -name '*.png' -print0 | xargs -0 -P4 -n1 -I{} convert '{}' '{}'.jpg

# Параллельные HTTP-запросы

xargs -P10 -n1 curl -O < urls.txt

# Бэкап нескольких БД одновременно

printf '%s\n' db1 db2 db3 | xargs -n1 -P3 -I{} pg_dump -Fc -d "{}" -f "{}.dump"

🔧 АВТОМАТИЗАЦИЯ 😍

# Выполнение команд из файла

xargs -L1 -I{} sh -c '{}' < commands.txt

# Обработка с логированием

find /var/log -type f -name '*.log' -print0 \

| tee >(tr '\0' '\n' > files.list) \

| xargs -0 grep -H 'ERROR'

🛡 БЕЗОПАСНОСТЬ ПРЕВЫШЕ ВСЕГО

ЧЕГО ИЗБЕГАТЬ 🚽:

# ❌ ОПАСНО - нет подтверждения

find / -name "*" | xargs rm -rf

# ❌ Чувствительно к пробелам

find . -name "My File.txt" | xargs r

КАК ДЕЛАТЬ ПРАВИЛЬНО 👍:

# ✅ Всегда тестируй с -p сначала!

find . -name "*.log" | xargs -p rm

# ✅ Для файлов с пробелами используй -print0/-0

find . -name "*.txt" -print0 | xargs -0 rm

# ✅ Проверяй лимиты системы

xargs --show-limit

🎪 ЭКСТРЕМАЛЬНЫЕ СЦЕНАРИИ

МАССОВАЯ ОБРАБОТКА 🤯:

# Ресайз фотографий в 8 потоков

find . -name "*.RAW" -print0 | xargs -0 -P 8 -I {} convert {} -resize 50% {}.jpg

# Параллельный анализ логов

find /logs -name "*.gz" -print0 | xargs -0 -P 4 zcat | grep "500 ERROR"

ДИНАМИЧЕСКИЕ КОМАНДЫ 😠:

# Каждая строка из файла - как отдельная команда

cat deployments.txt | xargs -L 1 -I {} sh -c "{}"

📚 шпаргалОчка ✍️

# Базовый синтаксис

cmd | xargs target_cmd

# Параллельно + замена

cmd | xargs -P N -I {} command {}

# Безопасно для пробелов

find ... -print0 | xargs -0 command

# По одному аргументу

cmd | xargs -n1 command

# Подтверждение выполнения

cmd | xargs -p command

# Строка за раз

cmd | xargs -L 1 command

💡 ЗОЛОТЫЕ ПРАВИЛА 😠

Всегда тестируй с -p перед опасными операциями

Используй -print0 + -0 для работы с файлами

-P N ускоряет обработку в N раз

-I {} дает полный контроль над подстановкой

Комбинируй с find для максимальной эффективности

🎯 ВЫВОД: xargs + find = 💪 СУПЕРСИЛА командной строки! 🏋️‍♂️

Теперь ты можешь обрабатывать тысячи файлов БЕЗ циклов for! Попробуй и расскажи о результатах в комментах! 👇

🔥 Лайк если полезно! Репост если не гей! 😏