Найти имя файла внутри архива tar в другом каталоге

Трудно сказать, что вы ищете, поскольку в описании ошибки, кажется, написано Описание ошибки . Это хранит его и идентифицирующий материал вокруг него:

sed 's/[_,][^:-]*:/ /g
' <<\IN
CreateOrder_hostname1.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_CreateOrder: [1443555726715] Error description [system]: Method1
ScheduleOrder_hostname2.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ScheduleOrder: [1443555726715] Error description 2 [system]: Method2
ScheduleOrder_hostname2.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ScheduleOrder: [1443555726715] Error description 3 [system]: Method3
ShipOrder_hostname3.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ShipOrder: [1443555726715] Error description 4 [system]: Method4
IN

... который печатает ...

CreateOrder 2015-09-29 15:42:06 ERROR  :Thread-26  [1443555726715] Error description [system]: Method1
ScheduleOrder 2015-09-29 15:42:06 ERROR  :Thread-26  [1443555726715] Error description 2 [system]: Method2
ScheduleOrder 2015-09-29 15:42:06 ERROR  :Thread-26  [1443555726715] Error description 3 [system]: Method3
ShipOrder 2015-09-29 15:42:06 ERROR  :Thread-26  [1443555726715] Error description 4 [system]: Method4

Я не знаю, слишком ли это много или слишком мало, или даже на правильном пути. Я тоже поигрался с отбрасыванием коробок.

sed 's/[_,[][^]:-]*[]:]/ /g
' <<\IN
CreateOrder_hostname1.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_CreateOrder: [1443555726715] Error description [system]: Method1
ScheduleOrder_hostname2.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ScheduleOrder: [1443555726715] Error description 2 [system]: Method2
ScheduleOrder_hostname2.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ScheduleOrder: [1443555726715] Error description 3 [system]: Method3
ShipOrder_hostname3.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ShipOrder: [1443555726715] Error description 4 [system]: Method4
IN

... это печатает ...

CreateOrder 2015-09-29 15:42:06 ERROR  :Thread-26    Error description  : Method1
ScheduleOrder 2015-09-29 15:42:06 ERROR  :Thread-26    Error description 2  : Method2
ScheduleOrder 2015-09-29 15:42:06 ERROR  :Thread-26    Error description 3  : Method3
ShipOrder 2015-09-29 15:42:06 ERROR  :Thread-26    Error description 4  : Method4

... похоже, я бы хотела, наверное, посмотреть.

Здесь полностью отсутствует Описание , но, может быть, все еще рассказывается та же история? Имейте в виду, что довольно сложно сопоставить строку, которая, по вашему мнению, может быть чем угодно , и которая, похоже, также не служит какой-либо реальной цели. Во всяком случае, это тоже весело.

sed 's/[_,][^-]*[^ ]:/ /g
' <<\IN
CreateOrder_hostname1.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_CreateOrder: [1443555726715] Error description [system]: Method1
ScheduleOrder_hostname2.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ScheduleOrder: [1443555726715] Error description 2 [system]: Method2
ScheduleOrder_hostname2.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ScheduleOrder: [1443555726715] Error description 3 [system]: Method3
ShipOrder_hostname3.domain.com_201509291530_tee.log:2015-09-29 15:42:06,715:ERROR  :Thread-26_ShipOrder: [1443555726715] Error description 4 [system]: Method4
IN

CreateOrder 2015-09-29 15:42:06 ERROR  :Thread-26  Method1
ScheduleOrder 2015-09-29 15:42:06 ERROR  :Thread-26  Method2
ScheduleOrder 2015-09-29 15:42:06 ERROR  :Thread-26  Method3
ShipOrder 2015-09-29 15:42:06 ERROR  :Thread-26  Method4
0
12.02.2018, 10:51
3 ответа

Tar puede usar comodines en sí mismo

tar tzvf./foo_tar/bar.tar.gz --wildcards '*/baz*'

Ej.:

$ filename_in_question=$(tar tvf test.tar --wildcards '*/received_10205861111464136.mp4')
$ echo $filename_in_question
-rwxr-xr-x ghp/ghp 1931930 2017-11-04 10:36./Marieanne/Messenger/received_10205861111464136.mp4
$ echo ${filename_in_question/*\//}
received_10205861111464136.mp4
2
28.01.2020, 02:43

find solo busca archivos que existen en la jerarquía de directorios, no aquellos almacenados dentro de los archivos. Puede enumerar los archivos contar -t:

tar -ztf./foo_tar/bar.tar.gz --wildcards --no-anchored 'baz*'

--wildcardspermite que *se interprete como un comodín, y --no-anchoredpermite que el nombre del archivo coincida después de cualquier /(, por lo que aún se encontrará si está en un subdirectorio en el archivo ).

La ​​coincidencia de patrones -en tarno es tan flexible como en find. Para el tipo de patrón que describe, podría filtrar el contenido completo a través degrep:

tar -ztf./foo_tar/bar.tar.gz | grep '\(^\|/\)baz[0-9]\+_'

Como desea guardar el resultado en una variable, también debe encerrar el comando usando Sustitución de comando:

filename_in_question=$(tar -ztf./foo_tar/bar.tar.gz | grep '\(^\|/\)baz[0-9]\+_')

Esto aún sería necesario si estuviera usando find.

0
28.01.2020, 02:43

Necesita una implementación tar con -integrado enlibfind:

star -t -f./foo_tar/bar.tar.gz -find -name 'baz*'

funcionará como esperas y puede hacer mucho más.

Compruebe la bola de alquitrán de schilytools:http://sourceforge.net/projects/schilytools/files/

stares la implementación de alquitrán libre más antigua. Ver página Man:

http://schilytools.sourceforge.net/man/man1/star.1.html

0
28.01.2020, 02:43

Теги

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