鉴于我:
- 有一个包含超过 1000 个文件的目录
- 有一个经过 gzip 压缩的 tar 文件,其中包含这些文件的子集 (x.tgz)
将读取 gzip 压缩的 tar 文件的内容并从 tar 文件中包含的目录中删除所有文件的单个命令行(如果可能)是什么?
答案1
您需要位于创建 tar 文件的目录,例如$HOME
.然后,如果您的 Documents 目录中有一个安全的 tgz,/backup/Documents.tgz
您可以执行以下操作:
$ for file in $(tar -tzf /backup/Documents.tgz); do \
[[ -f $file ]] && rm $file || echo "$file does not exist"; done
如果您还想删除目录,您可以使用rm -fr $file
.
答案2
也许这样的事情会对你有帮助
rm -rf `find . -name '*.tgz' -exec tar -tzf '{}' \;`
不确定它如何处理这么多文件。
答案3
$ tar -tzf x.tgz |grep -v '/$' | xargs -n1 -d '\n' echo rm
echo
如果看起来不错,请将其删除。
解释:
tar -tzf x.tgz
-- 列出内容grep -v '/$'
-- 跳过目录xargs -n1 -d '\n' echo rm
-- 对于每一 (-n1
) 行 (-d '\n'
) 输入,运行echo rm
答案4
由于 tar (即使在非详细模式下)在tar t
输出中列出了符号链接和硬链接,因此您无法使用tar t
来获取文件列表。更好的使用:
star -t -tpath < archive.tar > file-list.txt