Bra*_*one 6 command-line tar command
我有一个 tar 文件,其中包含名为 .tar 的文件夹中的一些文件old_name
。现在我想创建一个新的 tar 文件,该文件夹已被重命名为,new_name
而无需将文件解压缩到磁盘,因为这对于大型存档来说会显着变慢(磁盘读取和写入的两倍以上)。
我知道该怎么做:tar -xf old.tar; tar -cf new.tar --transform 's/old_name/new_name/' old_name
我尝试了几件事,但似乎都没有奏效:
tar -cOf old.tar | tar -xf new.tar --transform 's/old_name/new_name/'
cat old.tar | tar --delete --transform 's/old_name/new_name/' > new.tar
cat old.tar | tar -u --transform 's/old_name/new_name/' > new.tar
但似乎没有任何效果。
关闭我发现是这些:
但那些是关于删除 tarball 中的文件,而不是更改它们的路径。
tar 可以创建或提取 tar,但不能以这种方式对流进行操作。
你需要类似的东西tar-stream
- 它甚至有一个例子可以满足你的要求:
https://github.com/mafintosh/tar-stream#modifying-existing-tarballs