文件名和文件夹名称不匹配

时间:2013-02-22 10:36:32

标签: shell unix

我使用以下字符串在一个小文件列表(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之间的文件会发生这种情况。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

尝试将脚本更改为:

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

因此output_000.txt将被复制到output_0