2013-02-22 89 views
0

我的小文件的列表分裂一个大文件(2.8G)(284个名为.txt)使用以下字符串:文件名和文件夹名称不匹配

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的文件中。

我该如何解决这个问题?

回答

2

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

试着改变你的脚本:

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

所以output_000.txt将被复制到output_0

+0

谢谢dogbane! t工作得很好! – Fuv8 2013-02-22 10:56:50

相关问题