创建不包含父目录的 tar 存档

创建不包含父目录的 tar 存档

我正在尝试为我的脚本创建一个图形程序。

在脚本中,我使用 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

相关内容