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



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

这两种操作我都独立尝试过。第一个是循环遍历bigdata中的所有文件/使用

#!/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

${..}部分被称为参数扩展。

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

相关内容

  • 没有找到相关文章

最新更新