BASH ::从命令行查找归档文件

时间:2009-11-05 17:13:08

标签: bash

我知道如何使用find

查找文件
# find /root/directory/to/search -name 'filename.*'

但是,如何查看档案,因为文件可以在内部划线......

感谢名单

3 个答案:

答案 0 :(得分:1)

我定义了一个函数(zsh,次要更改 - > BaSh)

## preview archives before extraction
# Usage:        show-archive <archive>
# Description:  view archive without unpack
  show-archive() {
        if [[ -f $1 ]]
        then
                case $1 in
                        *.tar.gz)      gunzip -c $1 | tar -tf - -- ;;
                        *.tar)         tar -tf $1 ;;
                        *.tgz)         tar -ztf $1 ;;
                        *.zip)         unzip -l $1 ;;
                        *.bz2)         bzless $1 ;;
                        *)             echo "'$1' Error. Please go away" ;;
                esac
        else
                echo "'$1' is not a valid archive"
        fi
  }

你可以

find /directory -name '*.tgz' -exec show-archive {} \| grep filename \;

答案 1 :(得分:0)

find /directory -name '*.tgz' -exec tar ztf {} \| grep filename \; 或类似的东西...但我不认为有一个“简单”的解决方案。

答案 2 :(得分:0)

如果您的存档是某种压缩tarball,您可以使用tar的功能搜索特定文件并仅打印该文件名。如果你的tar支持通配符,你也可以使用它们。例如,在我的系统上:

tar tf sprt12823.logs.tar --wildcards *tomcat*

打印:

tomcat.log.20090105

虽然tarball中有更多文件,但只有一个匹配模式“* tomcat *”。这样您就不必使用grep。

您可以将此与find和gunzip或您使用过的其他任何拉链实用程序结合使用。