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


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

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

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

Может не сработать, если в архиве файлы с именами на русском.
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн ReNzRv

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

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

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4712
  • Capture the truth
    • Просмотр профиля
Исправить не сложно
Код: (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 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн ReNzRv

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


Оффлайн borodadada

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

 

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