您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在不占用磁盘空间的情况下在tar存档中的文件中使用grep模式

如何在不占用磁盘空间的情况下在tar存档中的文件中使用grep模式

这是我的看法:

while read filename; do tar -xOf file.tar "$filename" | grep 'pattern' | sed "s|^|$filename:|"; done < <(tar -tf file.tar | grep -v '/$')

解释如下:

一条条件:如果|文件名中有OR栏(),则此行将中断。

嗯 实际上,这是一个不错的bash函数,您可以将其附加到.bashrc文件中:

targrep() {

  local Taropt=""

  if [[ ! -f "$2" ]]; then
    echo "Usage: targrep pattern file ..."
  fi

  while [[ -n "$2" ]]; do

    if [[ ! -f "$2" ]]; then
      echo "targrep: $2: No such file" >&2
    fi

    case "$2" in
      *.tar.gz) Taropt="-z" ;;
      *) Taropt="" ;;
    esac

    while read filename; do
      tar $Taropt -xOf "$2" \
       | grep "$1" \
       | sed "s|^|$filename:|";
    done < <(tar $Taropt -tf $2 | grep -v '/$')

  shift

  done
}
其他 2022/1/1 18:15:00 有595人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶