Bash / Shell
Массовые операции с файлами
Безопасный обход файлов с пробелами в именах, переименование, поиск и замена по содержимому.
Код
# Обход с учётом пробелов и переводов строк в именах
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