gpt4 book ai didi

linux - 通过排除其父文件夹为多个目录创建单个 tar 文件

转载 作者:IT王子 更新时间:2023-10-29 00:17:03 27 4
gpt4 key购买 nike

我正在开发一个 bash shell 脚本,它通过将其父文件夹排除在所有目录中并排除指定的文件夹来为多个文件夹创建一个 tar 文件。

目录结构为:

$ ls dir1
dir11 testdir

$ ls dir2
dir12 testdir2

$ ls dir3
dir13 testdir3

$ tar -cvf file1.tar dir1 dir2 dir3 --exclude="test*"

以上工作正常。

但我不希望 dir1、dir2 和 dir3 文件夹也包含在 tar 中。我只需要里面的文件和目录。

所以我的最终 tar 应该包含如下内容

$ tar -tvf file1.tar
dir11 dir12 dir13

谁能帮我解决这个问题。提前致谢

最佳答案

如果我没看错问题,您可以使用 -C(大写 C = 更改目录)选项,例如:

tar cvf /tmp/some.tar -C /path/to/dir1 . -C /path/to/dir2 .    #multiple -C allowed

检查一下

 tar cf - -C /path/to/dir1 . -C /path/to/dir2 .  | tar tvf -

例子:

创建测试用例

cd /tmp
mkdir test
cd test
mkdir -p {dir{1..3},testdir}
touch dir1/file{1..3} dir2/file{4..6} dir3/file{7..9}

树现在是:

$ find . -print
.
./dir1
./dir1/file1
./dir1/file2
./dir1/file3
./dir2
./dir2/file4
./dir2/file5
./dir2/file6
./dir3
./dir3/file7
./dir3/file8
./dir3/file9
./testdir

tar :

tar cf - -C dir1 . -C ../dir2 . -C ../dir3 . | tar tvf -

tar 内容是:

drwxr-xr-x  0 jm    staff       0 14 aug 13:07 ./
-rw-r--r-- 0 jm staff 0 14 aug 13:07 ./file1
-rw-r--r-- 0 jm staff 0 14 aug 13:07 ./file2
-rw-r--r-- 0 jm staff 0 14 aug 13:07 ./file3
drwxr-xr-x 0 jm staff 0 14 aug 13:08 ./
-rw-r--r-- 0 jm staff 0 14 aug 13:10 ./file4
-rw-r--r-- 0 jm staff 0 14 aug 13:10 ./file5
-rw-r--r-- 0 jm staff 0 14 aug 13:10 ./file6
drwxr-xr-x 0 jm staff 0 14 aug 13:08 ./
-rw-r--r-- 0 jm staff 0 14 aug 13:10 ./file7
-rw-r--r-- 0 jm staff 0 14 aug 13:10 ./file8
-rw-r--r-- 0 jm staff 0 14 aug 13:10 ./file9

如果您想要其他东西,请编辑您的问题。

关于linux - 通过排除其父文件夹为多个目录创建单个 tar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com