Мое обычное решение:
find -iname '*.zip' -exec unzip -l {} \; 2>/dev/null | grep '\.zip\|DESIRED_FILE_TO_SEARCH'
Пример:
find -iname '*.zip' -exec unzip -l {} \; 2>/dev/null | grep '\.zip\|characterize.txt'
Результат примерно такой:
foozip1.zip:
foozip2.zip:
foozip3.zip:
DESIRED_FILE_TO_SEARCH
foozip4.zip:
...
Если вы хотите только zip-файл с попадает в :
find -iname '*.zip' -exec unzip -l {} \; 2>/dev/null | grep '\.zip\|FILENAME' | grep -B1 'FILENAME'
FILENAME здесь используется дважды, поэтому вы можете использовать переменную.
С find вы можете использовать ПУТЬ / К / ПОИСК
Настроить бесконечный цикл с подсказкой для пользовательского ввода; если ввод соответствует одной из опций, то (здесь, притворитесь, что )запускает эту опцию. Если они вводят неверный вариант, скажите им об этом; если они хотят бросить, выпустите их. Как только пользователь выйдет из соответствующего скрипта Python (или введет недопустимую опцию ), он вернется в цикл, чтобы снова выбрать опцию.
#!/bin/sh
while :
do
printf 'Choose your mode (nat or direct) or q to quit: '
read REPLY
case $REPLY in
(nat) echo python3 nat.py
;;
(direct) echo python3 direct.py
;;
(q) break
;;
(*) echo Unknown option
;;
esac
done
Спасибо за ответы.
На самом деле я сделал это через atexit из py-скриптов.
изменение по умолчанию():
подпроцесс импорта
subprocess.call ("/home/VPN/vpn.sh", shell=True)
импортировать атексит
atexit.register (изменить)
выход по умолчанию (параметр):
система импорта
sys.exit()
С bash
вы можете рассмотреть встроенную функцию select
, например
select R in nat direct quit; do [ $REPLY -ge 3 ] && break; echo python3 $R.py; done