我知道如何使用find
查找文件# find /root/directory/to/search -name 'filename.*'
但是,如何查看档案,因为文件可以在内部划线......
感谢名单
答案 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或您使用过的其他任何拉链实用程序结合使用。