从文本文件中提取第一个 10KB 块,然后将新文件移动到不同的位置

extracting the first 10KB chunk from a text file and then moving the new file to a different location

我在bigdata/*有所有的文本文件。txt.The这个文件的格式是languageName-xxx-10MB.txt。我想执行一个操作,将这些文件从 10MB 递归地分块到前 10KB,然后将新形成的文件放在 ../smalldata/ 中。新形成的文件的格式应为 languageName-xxx-10KB.txt

我已经尝试了这两个操作 independently.The 首先是循环遍历大数据中的所有文件/使用

#!/bin/bash
for entry in bigdata/*
do
echo "$entry"
done

我得到的输出为

bigdata/lang1-xxx-10MB.txt
bigdata/lang2-xxx-10MB.txt
.
.
bigdata/langn-xxx-10MB.txt

我也尝试过使用 head 命令获取文件的前 10KB

head -c 10240 lang1-xxx-10MB.txt > ../smalldata/lang1-xxx-10KB.txt

我正在寻找一种迭代合并这两个任务的方法。

在包含 bigdatasmalldata 目录的目录中时,您可以 运行

#!/bin/bash
cd bigdata
for entry in *
do
  head -c 10240 "$entry" > "../smalldata/${entry//10MB/10KB}"
done

${..} 部分称为 parameter expansion

#! /bin/bash
BIGDATA=bigdata/*
SMALLDATA=smalldata
for entry in $BIGDATA
do
    filename=`basename $entry`
    newname=$(echo $filename | awk -F '-' '{print  "-"  "-10KB.txt"}')
    head -c 1 $entry > $SMALLDATA/$newname
done