我正在尝试为我的脚本创建一个图形程序。
在脚本中,我使用 tar 创建 tar 存档。
从图形程序中,我获得了要创建 tar 存档的文件的全名。
tar -cvf temp.tar /home/username/dir1/dir2/selecteddir
我的 tar 存档包括 home、用户名、dir1、dir2 和 selecteddir,而我希望 tar 创建只包括 selecteddir 的存档。
答案1
您可以使用-C
选项tar
来完成此操作:
tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir
从手册页tar
:
-C 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.
答案2
您可以使用两种方法来解决此问题。
我认为第一个更容易。只需cd
进入要压缩的目录的正上方即可。在这种情况下,它会是dir2
。
$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir
第二种方法是使用--transform
采用sed
表达式并针对文件名运行它的选项。注意:您必须在表达式/
中转义sed
。
$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'
答案3
首先,进入工作目录,
cd /your/working/directory/
然后使用魔法*
:-)
tar -cvf temp.tar *
答案4
为了避免出现点目录,您可以在事后将其删除:
tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz
这将创建一个仅包含以下内容的存档内容的/path/to/dir
。