我试图了解使用 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/