У меня есть каталог с сотнями подкаталогов со многими .lib файлами в них. Я могу использовать ar -x filename.lib
Команда распаковать один из них, но мне было интересно, как можно было бы сделать это рекурсивно, так как нет встроенного рекурсивного флага в соответствии с man ar
, Щас пытаюсь сделать
find . -name '*.lib' -exec ar -x {} +
но я получаю сообщение о каждом файле no entry filename.lib in archive
, Я погуглил эту ошибку, но не смог найти ничего подходящего, и мой текущий метод основан на этот ответы на вопрос (а именно 2-й и его комментарии), но он явно не работает. Есть идеи, что я делаю не так?
linux
command-line
bash
Alerra
источник
источник
Ответы:
man 1 ar
говорит, что синтаксисТаким образом, он работает с одним архивом за раз, дополнительные аргументы являются членами. Вы, очевидно, не хотите указывать участников.
find … -exec … {} +
заменители{}
с множественный пути. Чрезмерные пути интерпретируются как членыar
, Тебе нужноfind … -exec … {} … \;
который заменяет{}
только с одним путем.Таким образом, каждый найденный файл передается отдельный
ar
и удовлетворяет требованиям только для одного архива.Замечания:
-execdir
может или не может быть лучше для вас. Ссылаться наman 1 find
чтобы узнать разницу.источник