use*_*225 10 tar directory filenames
在我当前的目录下,我有两个子目录:
dir_1/
- file1.png
- file2.png
...
- fileN.png
dir_2/
- fileA.txt
- ...
- fileZ.txt
Run Code Online (Sandbox Code Playgroud)
当我通过以下方式对两个目录进行 tar 压缩时:
tar -cvzf result.tar.gz dir_1/ dir_2/
Run Code Online (Sandbox Code Playgroud)
我得到了result.tar.gz但它维护了目录结构。我的意思是当我提取result.tar.gz 时,我又得到了dir_1
& dir_2
。
我怎样才能 tar 压缩以便不保留目录结构,这意味着当我提取 tar.gz 文件时,我只得到文件
result/
file1.png
...
fileN.png
fileA.txt
...
fileZ.txt
Run Code Online (Sandbox Code Playgroud)
arn*_*efm 15
我认为你可以用这个-C
选项来做到这一点。
从 tar 手册页:
-C directory, --cd directory, --directory directory
In c and r mode, this changes the directory before adding the following files.
In x mode, change directories after opening the archive but before extracting
entries from the archive.
Run Code Online (Sandbox Code Playgroud)
这意味着您应该能够运行
tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .
Run Code Online (Sandbox Code Playgroud)
达到你想要的。
使用 GNU tar,您可以在--transform
将文件名添加到存档或从存档中提取文件名时使用重写文件名的选项。对于 BSD tar 或 pax,该选项-s
执行相同的操作。
要删除前导目录组件(以便dir_1/subdir/somefile
存储为subdir/somefile
):
tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2
Run Code Online (Sandbox Code Playgroud)
要删除所有目录组件(以便dir_1/subdir/somefile
存储为somefile
):
tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26267 次 |
最近记录: |