我现在有一个 tar.gz,我只想从中提取一两个文件,然后将它们打包/添加到一个新的 tar.gz 中,一气呵成。当然,我可以只保存到一个临时文件并使用它,但绝对要求是在没有任何中间文件输出(即管道)的情况下完成这一切。换句话说,我想要的是类似于以下伪代码(显然语法不正确)
tar -xvf first.tar.gz subdir1/file1 subdir2/file2 | tar cf - | gzip > second.tar.gz
Run Code Online (Sandbox Code Playgroud)
有谁知道正确的语法吗?我尝试了很多变体,但都无济于事。
我也对使用 cpio 的想法持开放态度,但同样,我对如何正确使用语法感到困惑,据我所知,cpio 只接收档案或文件名,而不是文件。
任何帮助将不胜感激。
编辑:tarball 中没有要提取的特定文件名模式。鉴于 BSD 和 GNU tar 一次只能搜索一种模式,我不确定是否可以分别使用包含/排除标志。
问题很简单:我有两个矩阵,A和B,它们是M乘N,其中M >> N.我想首先取A的转置,然后乘以B(A ^ T*B)到把它放到C中,这是N乘N.我已经为A和B设置了所有东西,但是如果没有它返回错误的答案我怎么称呼cublasSgemm?
我知道cuBlas有一个cublasOperation_t enum用于预先转置事物,但不知怎的,我还没有正确使用它.我的矩阵A和B按行主顺序排列,即[row1] [row2] [row3] .....在设备存储器中.这意味着A被解释为A转置,BLAS需要知道我的A是按列主要顺序.我目前的代码如下所示:
float *A, *B, *C;
// initialize A, B, C as device arrays, fill them with values
// initialize m = num_row_A, n = num_row_B, and k = num_col_A;
// set lda = m, ldb = k, ldc = m;
// alpha = 1, beta = 0;
// set up cuBlas handle ...
cublasSgemm(handle, CUBLAS_OP_T, CUBLAS_OP_N, m, n, k, &alpha, A, lda, B, ldb, &beta, C, ldc);
Run Code Online (Sandbox Code Playgroud)
我的问题:
我正确设置了m,k,n吗?
那么lda,ldb,ldc呢?
谢谢!