linux - tar: 目录: 无法 rmdir: 目录不为空

标签 linux tar

我试图了解使用 tar 的正确方法是什么。我有一个名为 main 的目录,在 sub 目录中,它包含一些我想排除的文件和目录。我想删除的所有其他人。我使用的命令:

tar --remove-files --exclude main/sub/.runtime --exclude main/sub/.startTime --exclude main/sub/subsubdir -zcvf main.tar.gz main

但是我得到:

tar: main/sub: Cannot rmdir: Directory not empty
tar: Exiting with failure status due to previous errors

当然 main/sub 目录不是空的(因为排除了文件/目录)。在不将输出重定向到 /dev/null 或其他方式的情况下解决它的正确方法是什么?我仍然想得到错误,但不是那个错误。

最佳答案

这可能是 --remove-files 选项的错误。

您可以包含文件而不是排除文件:

#!/usr/bin/env bash

shopt -s dotglob extglob nullglob
tar -zcvf main.tar.gz main/!(sub) main/sub/!(*@(.runtime|.startTime|subsubdir))

一旦您对结果满意,请添加 --remove-files

关于linux - tar: 目录: 无法 rmdir: 目录不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62375314/

相关文章:

python - Tarfile 在第一个常规文件后停止

c - 我需要遍历 getaddrinfo() 吗?

linux - 自旋锁原子上下文期间的抢占和休眠

archive - IBM i PASE tar - 排除文件或目录

linux - 您可以使用 tar 将补丁应用到现有的 Web 应用程序吗?

linux - 在 Linux 中使用 tar 删除以前缀开头的文件

java - 为什么 Java 7 Files.walkFileTree 在遇到远程驱动器上的 tar 文件时抛出异常

linux - Linux 中的核心转储

linux - 使用 awk 或 sed 对以模式开头的行进行排序

linux - 在 i386 Debian 下编译 amd64