我使用以下字符串在一个小文件列表(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之间的文件会发生这种情况。
我该如何解决这个问题?
答案 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
。