shell脚本 检查test.tar.gz存在,且检查 tar -tvf test.tar.gz > /dev/null 结果,如果是invalid tar magic 则显示文件无效
时间: 2024-03-05 11:53:54 浏览: 163
可以使用如下的shell脚本来检查test.tar.gz文件是否存在,并检查其是否是有效的tar压缩文件:
```
#!/bin/bash
if [ -f "test.tar.gz" ]; then
if tar -tvf test.tar.gz > /dev/null 2>&1; then
echo "test.tar.gz is a valid tar file."
else
echo "test.tar.gz is an invalid tar file."
fi
else
echo "test.tar.gz does not exist."
fi
```
这个脚本首先检查test.tar.gz文件是否存在,如果存在则执行tar -tvf命令来检查其是否是有效的tar压缩文件。如果命令执行成功,则说明文件是有效的,否则就会输出"test.tar.gz is an invalid tar file."。注意这里使用了重定向,将tar命令的输出重定向到/dev/null,这样就不会在屏幕上显示tar命令的输出了。
相关问题
shell脚本 检查 tar -tvf test.tar.gz > /dev/null 结果,如果是invalid tar magic 则显示文件无效
可以使用if语句和grep命令来实现该功能,具体的shell脚本代码如下:
```
if tar -tvf test.tar.gz > /dev/null 2>&1 | grep -q "invalid tar magic"; then
echo "文件无效"
else
echo "文件有效"
fi
```
该脚本首先执行tar命令来尝试解压test.tar.gz文件,并将输出结果重定向到/dev/null中,这样就不会在屏幕上输出任何信息。然后使用2>&1将标准错误输出重定向到标准输出,这样可以将标准错误信息一起过滤掉。接着使用grep命令来查找"invalid tar magic"字符串,如果找到了该字符串,则说明文件无效。最后使用if语句来判断文件是否有效并输出相应的提示信息。
cat test.tar.gz.section-*>test.tar.gz
这个命令看起来是想从一个名为`test.tar.gz`的大文件中提取出名为`section-*`的部分,并将结果合并成新的`test.tar.gz`文件。但是,正常情况下,`cat`命令用于连接并打印文件内容,不适合这种复杂的操作,特别是涉及压缩文件的操作。
实际上,应该使用`tar`命令来进行这样的解压缩和过滤操作。这里可能需要两步:
1. 使用`tar`的`-tf`选项查看`test.tar.gz`内有哪些`section-`开头的文件:
```bash
tar -tf test.tar.gz | grep section-
```
这会列出所有符合条件的条目。
2. 确定要提取的文件列表后,你可以用`tar`的`-zxvf`选项提取这些文件,然后再用`tar`的`czf`选项将它们打包回一个新的`test.tar.gz`:
```bash
tar czvf test.tar.gz $(tar tvf test.tar.gz | grep 'section-\*' | awk '{print $NF}')
```
这里,`$(...)`是一个命令替换,获取了`tar tvf`列出的文件名,并仅选择了那些满足条件的文件。
注意,如果原始`test.tar.gz`文件已经进行了多次分割或者有复杂的结构,这个过程可能会更复杂。建议直接查阅相关的文档或在线教程,确保操作正确无误。
阅读全文