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

Я выполнил sudo fdisk-l, как предложил г-н Shunz. Я принял ответ г-на Shunz.

(BTW, Stackexchange не разрешил бы мне форматировать эту информацию, ясно использующую функцию Comment. Возвраты каретки, которые я попытался вставить просто, добавили комментарий преждевременно. Поэтому я использовал функцию Answer вместо этого, так, чтобы другие могли считать эту информацию и понять это.)

Начальная загрузка устройства запускает идентификационную систему блоков конца

/dev/sda1 * 2048 616447 307200 83 Linux

/dev/sda2 616448 103016447 51200000 8e Linux LVM

/dev/sda3 103016448 115304447 6144000 82 подкачки Linux / Солярис

/dev/sda4 115306494 134836223 9764865 5 Расширенных

/dev/sda5 115306496 134836223 9764864 83 Linux

7
17.06.2014, 00:49
2 ответа

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

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

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

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

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

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

Пожалуйста, найдите описание чата this, где Жиль объясняет, почему вышеприведенная команда не то, что вы ищете.

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

[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 file.
  3. Теперь я добавлю его в jar-файл, запустив команду jar.
  4. Теперь, когда я запущу вашу команду, он вернет мне файл class file а не тот jar-файл, который вы ищете.

      [root@keithpc jar_check1] # javac springtest.java
     [root@keithpc jar_check1]# java springtest
     Здравствуй, весна
     [root@keithpc jar_check1]# jar cvf sprtest.jar sprtest.class
     добавленный манифест
     добавляя: springtest.class(in = 426) (out= 286)(сдуто 32%)
    
     ## Я запустил твою команду после создания файла банка. 
    
     [root@keithpc jar_check1]# find . -имя "*.jar" -exec jar tf '{}' \|. 
     grep -H "весна" \;
     ## Как видите, он возвращает мне файл класса, а не 
     jar-файл в качестве выходного. 
    
     sprtest.class
    
2
27.01.2020, 20:19

Теги

Похожие вопросы