-1

我尝试使用 for 循环做特定的事情,我需要你的帮助。

我有不同的文件夹,它们有不同的名称,比如GCF_A1 GCF_C4 GCF_R3......等等。

每个文件夹都有很多具有不同名称的文件,例如GCF444444 GCF00001RR GCF1000FF......等等。

我想要做的是将所有GCF4444文件(gz格式和不同文件夹中的文件)放在一个文件中。

例如,如果我有 5 个文件夹,每个文件夹中都有一个我要复制的文件,那么最后我希望有一个文件,其中包含不同文件夹中五个文件的所有内容。

4

2 回答 2

0

这可能看起来像:

 find <base_path_of_your_zips> -type f -name "*.gz" -exec cat {} \path\to\single\zippedfile.gz \;
于 2020-04-22T15:09:32.393 回答
0

我不确定你到底在问什么,但这能回答吗?

find /path/to/parent/dir -name GCF4444 -print0 |xargs -0 cat > GCF4444.gz

这可能没有任何意义,但问题不是很清楚你想要什么。这只是盲目地连接每个文件,其全名GCF4444按照它们所在的顺序排列。(gzip 是健壮的,并且单个 gzip 文件可以毫无问题地连接在一起。额外的标头的开销成本非常小,您可以通过将结尾更改为|xargs -0 zcat |gzip -9 > GCF4444.gz)

否则,也许您想保留层次结构:

cd /path/to/parent/dir
find . -name GCF4444 -print0 |xargs -0 tar -pcf GCF4444.tar

GCF4444.tar这将在父目录的顶层创建一个文件。它将包含GCF4444嵌套目录结构中的每个文件。我没有使用tar -z,因为您说文件内容已经 gzip 压缩(生成的文件可能会稍大一些)。

于 2020-04-22T15:10:56.970 回答