Intereting Posts
Дисковое пространство в окнах, не отображающее фактический размер изображения qcow2 Память виртуальной памяти не отражена в ее группе du и ls сообщают о неправильном размере каталога Настройте мой модем не как маршрутизатор CUPS на FreeBSD: подходящие пути для ручного размещения отдельных файлов PPD Как найти разные файлы в UNIX на основе. расширение? подсчет числа вхождений в файле списка данных Ошибка при попытке подключения к Интернету с использованием wvdial bc: почему `ibase = 16; obase = 10; FF` возвращает FF а не 255? Как я могу сделать свою тему Zsh («fade») хорошо выглядеть в urxvt? systemd с таймером как пользователь Сервер MongoDB показывает новую версию OpenSSL, чем установлен Как быстро изменить параметр firefox (с помощью ярлыков, командной строки, …)? Как узнать, использует ли кто-нибудь ваш Wi-Fi Почему преобразование команды ImageMagick распознает только «Courier» как шрифт?

самый быстрый способ grep jar-файла для определенного имени в нем?

Я пытаюсь найти все банки, которые имеют spring своего имени. Я работаю с окнами и использую cygwin для запуска команд Linux. Правильно ли выглядит моя команда ниже?

 find . -name "*.jar" -exec jar tf '{}' \| grep -H "spring" \; 

По какой-то причине она по-прежнему обрабатывается и не имеет результата на экране. Любой быстрый способ grep jar-файла с определенным именем?

Например, ниже приведены действительные файлы jar, в которых есть весна –

 spring-web.jar spring-core.jar test-spring.jar 

Я не верю, что команда jar принимает несколько файлов .jar с помощью аргументов, поэтому AFAIK не может содержать одного вызова jar адресующего все .jar файлы. Один из способов ускорить работу, избегая одного вызова exec для каждого файла .jar является следующим:

 find . -name '*.jar' -exec sh -c \ 'for f; do jar -tf "$f" | grep --label="$f" "spring"; done' sh {} + 

Следующая команда будет искать файлы jar, в которых есть подстрока.

 find /some/dir -type f -name "*spring*.jar" 

Теперь ваша оригинальная команда просматривает содержимое, что не соответствует тексту текста или примерам.

 find . -name "*.jar" -exec jar tf '{}' \| grep -H "spring" \; 

Пожалуйста, найдите это описание чата, где Гилл объясняет, почему указанная команда не является тем, что вы ищете.

тестирование

 [root@keithpc check]# cd jar_check/ [root@keithpc jar_check]# ls [root@keithpc jar_check]# touch spring1.jar [root@keithpc jar_check]# touch 1spring.jar [root@keithpc jar_check]# touch no_sss_spring.jar [root@keithpc jar_check]# touch spring.txt 

Выход :

 [root@keithpc jar_check]# find ./ -type f -name "*spring*.jar" ./no_sss_spring.jar ./1spring.jar ./spring1.jar 

Как вы можете видеть, файл spring.txt не возвращается, что, я считаю, является тем, что вы ищете.

Теперь, чтобы понять, что делает ваша команда,

  1. Сначала я создал файл java с именем springtest .
  2. Теперь я создаю файл class , запустив java команду в java файле.
  3. Теперь я добавляю его в файл jar, запустив команду jar.
  4. Теперь, когда я запустил вашу команду, он вернет мне файл class а не файл jar, который вы ищете.

      [root@keithpc jar_check1]# javac springtest.java [root@keithpc jar_check1]# java springtest Hello,spring [root@keithpc jar_check1]# jar cvf springtest.jar springtest.class added manifest adding: springtest.class(in = 426) (out= 286)(deflated 32%) ##Here I run your command after creating the jar file. [root@keithpc jar_check1]# find . -name "*.jar" -exec jar tf '{}' \| grep -H "spring" \; ##As you can see, it returns me the class file rather than the jar file as the output. springtest.class