Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: поиск файлов внутри архивов zip через регулярное выражение и удаление [Решено]  (Прочитано 553 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
  • Ну чё Боярский?
    • Просмотр профиля
Уважаемые, у меня много zip файлов, мне надо найти все файлы внутри архивов с куском имени и удалить их,
гуглил нашёл пример, работает, нет куска который удалит найденный файл, может кто знает как это сделать?

for i in *.zip; do
    echo "scanning $i";
    grep -oP "kusokimenifaila" <(unzip -l "$i") && echo "Found in $i" || echo "Not Found in $i";
done
« Последнее редактирование: 18 Марта 2020, 12:25:07 от zg_nico »

Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5440
  • Сделай шаг и пройдешь милю
    • Просмотр профиля
Примерно так
for i in ./*.zip ; do
  RMFILE=$(zipinfo -1 "$i" | grep "kusokimenifaila")
  zip -v -d "$i" "$RMFILE"
done

Может не сработать, если в архиве файлы с именами на русском.
ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Примерно так
for i in ./*.zip ; do
  RMFILE=$(zipinfo -1 "$i" | grep "kusokimenifaila")
  zip -v -d "$i" "$RMFILE"
done

Может не сработать, если в архиве файлы с именами на русском.
В таком варианте будет писать ошибки при удалении zip если не будет находить кусок слова в архивах. Исправить не сложно, но может это и не критично для ТС ::)

Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5440
  • Сделай шаг и пройдешь милю
    • Просмотр профиля
Исправить не сложно
Код: (bash) [Выделить]
for i in ./*.zip ; do
  RMFILE=$(zipinfo -1 "$i" | grep "kusokimenifaila")
  [ "$RMFILE" ] && {
     echo -n "$i -> "
     zip -d "$i" "$RMFILE" ;}
done
ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Можно примерно так короче но не проверял:
for i in ./*.zip ; do
    zipinfo -1 "$i" | grep "kusokimenifaila" | xargs -r -d "\n" zip -d "$i"
done


Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
  • Ну чё Боярский?
    • Просмотр профиля
спасибо, всё работает

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.