0

我使用以下字符串在小文件列表(284 个文件 .txt)中拆分了一个大文件(2.8G):

split -a 3 -C 10m -d 2 file.txt output_       
find . -type f -exec mv '{}' '{}'.txt \; 

然后,我创建了一个包含 284 个文件夹的列表,因为我想将 284 个文件中的每一个都放在相应的文件夹中。我使用的字符串如下:

for num in {1..284}; do
  mkdir output$num
done

要复制文件夹中的每个文件,字符串是这样的:

for i in *.txt do
  dir=${i%.txt}
  cp "$i" "$dir"
done

现在的问题是将每个文件放在相应的文件夹中,因为第一个文件被命名为例如:output_000.txt,而文件夹被命名为 output_0。这发生在从 0 到 100 的文件中。

我怎么解决这个问题?

4

1 回答 1

2

例如,如果您有一个填充数字字符串s=001,您可以使用 将其转换为数字$((s))

尝试将脚本更改为:

for i in *.txt
do 
    prefix=${i%.txt} 
    num=$((${prefix#*_}))
    cp "$i" "output_${num}"
done

所以output_000.txt会被复制到output_0.

于 2013-02-22T10:49:50.753 回答