我尝试使用 for 循环做特定的事情,我需要你的帮助。
我有不同的文件夹,它们有不同的名称,例如GCF_A1
GCF_C4
GCF_R3
...等等。
每个文件夹都有很多文件具有不同的名称,例如GCF444444
GCF00001RR
GCF1000FF
...等等。
我想做的是将所有GCF4444
文件(gz
格式和不同文件夹中)放在一个文件中。
例如,如果我每个文件夹中有 5 个文件夹,则我想复制一个文件,那么我最终希望有一个文件包含不同文件夹中五个文件的所有内容。
这可能看起来像这样:
find <base_path_of_your_zips> -type f -name "*.gz" -exec cat {} pathtosinglezippedfile.gz ;
我不确定你到底在问什么,但这能回答吗?
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
因为您说文件内容已经压缩(生成的文件可能会稍大)。