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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
  • Ну чё Боярский?
    • Просмотр профиля
Уважаемые, у меня много 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

  • Администратор
  • Старожил
  • *
  • Сообщений: 6125
  • Vamos a Bailar
    • Просмотр профиля
Примерно так
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

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

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

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6125
  • Vamos a Bailar
    • Просмотр профиля
Исправить не сложно
Код: (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

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


Оффлайн borodadada

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

 

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