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


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

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

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

Оффлайн borodadada

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

Оффлайн ALiEN

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

Может не сработать, если в архиве файлы с именами на русском.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ReNzRv

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

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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Исправить не сложно
Код: (bash) [Выделить]
for i in ./*.zip ; do
  RMFILE=$(zipinfo -1 "$i" | grep "kusokimenifaila")
  [ "$RMFILE" ] && {
     echo -n "$i -> "
     zip -d "$i" "$RMFILE" ;}
done
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ReNzRv

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


Оффлайн borodadada

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

 

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