Si no le importa ejecutarlo dos veces (para obtener el conteo, luego las líneas ), puede usar grep.
Por la cuenta:
tar tvf myfile.tar | grep <path> | wc -l
Para las líneas, simplemente elimine| wc -l
Si prefiere ejecutar tar
una sola vez, puede guardar la salida en un archivo y luego cat
en grep y wc. El guión en conjunto se vería así:
tmp_file=$(mktemp)
tar tvf myfile.tar > $tmp_file
cat $tmp_file | grep <subdir> | wc -l
cat $tmp_file | grep <subdir>
rm $tmp_file
Si desea una -línea, probablemente haya un truco que pueda hacer con la sustitución y redirección de procesos, pero si está ejecutando esto con alguna cadencia, probablemente terminará colocándolo en un script/alias/función de todos modos, esto es un poco más fácil de leer y entender.
Si tiene varias rutas en el archivo tar que le gustaría eliminar, puede ponerlas todas en un archivo de texto y usargrep -f <paths file>