【发布时间】:2021-01-14 11:12:05
【问题描述】:
我有一个包含以下内容的 tar 文件:
$ tar tvf ../mein.tar
drwxr-xr-x user/user 0 2019-01-14 15:31 ./
drwxr-xr-x user/user 0 2019-01-14 15:30 ./dir2/
-rw-r--r-- user/user 0 2019-01-14 15:30 ./dir2/file21.jpg
-rw-r--r-- user/user 0 2019-01-14 15:29 ./file1.jpg
drwxr-xr-x user/user 0 2019-01-14 15:30 ./dir1/
drwxr-xr-x user/user 0 2019-01-14 15:30 ./dir1/dir11/
-rw-r--r-- user/user 0 2019-01-14 15:30 ./dir1/dir11/file111.jpg
-rw-r--r-- user/user 0 2019-01-14 15:30 ./dir1/dir11/file112.jpg
drwxr-xr-x user/user 0 2019-01-14 15:30 ./dir1/dir21/
-rw-r--r-- user/user 0 2019-01-14 15:30 ./dir1/dir21/file122.jpg
-rw-r--r-- user/user 0 2019-01-14 15:30 ./dir1/dir21/file121.jpg
-rw-r--r-- user/user 0 2019-01-14 15:30 ./dir1/file11.jpg
它包含几个可能包含也可能不包含 jpg 文件的子目录。文件名并不总是相同,但我知道目录 'dir1' 中只有一个 jpg 文件。我只想提取此文件,不提取其他 jpg 文件,既不在 dir2 也不在 dir1/dir* 中。
到目前为止我尝试过的是
$ tar -x -f ../mein.tar --wildcards 'dir1/*.jpg'
tar: dir1/*.jpg: Not found in archive
tar: Exiting with failure status due to previous errors
或
$ tar -x -f ../mein.tar --wildcards --wildcards-match-slash 'dir1/*.jpg'
tar: dir1/*.jpg: Not found in archive
tar: Exiting with failure status due to previous errors
如果我使用:
$ tar -x -f ../mein.tar --wildcards "*.jpg"
然后我得到所有的jpg文件,这不是我想要的。
鉴于我不知道该文件的确切名称,是否有人知道如何在 dir1 中提取 jpg 文件?我期望在子目录 dir1 中得到一个文件,输出应该是 'dir1/file11.jpg'。
【问题讨论】:
-
你试过
'./dir1/*.jpg'而不是'dir1/*.jpg'吗?注意前面的./,如tar tf所示 -
我的工作正常,只要我不引用它,即使我的相对路径找不到并展开文件名。
-
这也不起作用:
[vboxhain:/tmp/extract]$ tar -x -f ../mein.tar --wildcards './dir1/*.jpg'创建后续文件./dir1/dir11/file111.jpg./dir1/dir11/file112.jpg./dir1/dir21/file122.jpg./dir1/dir21/file121.jpg./dir1/file11.jpg