使用数组项作为文件名创建文件
Creating files using array items as filenames
我正在尝试创建给定 ID 及其相应日期的文件。我想使用数组项来设置这些文件的名称。问题是结果不是我在创建文件时所期望的。非常感谢您的帮助。
期望输出:
我想创建以下格式的文件:
FILE_300002_20170515.txt
FILE_500032_20170426.txt
FILE_400044_20170101.txt
当前输出:
FILE_300002_400044.txt
FILE_300002_300002.txt
FILE_300002_500032.txt
文件示例:
这是我的输入文件的内容:
300002,20170515,500032,20170426,400044,20170101
我的代码:
IFS=',' read -r -a array <<< "$input"
ini=1
ID=0
Da=1
num="${#array[@]}"
let num=num/2
while [ $ini -le $num ];do
touch "/path/FILE_${array[Da]}_${array[ID]}.txt"
let ini=ini+1
let Da=Da+2
let ID=ID+2
done
****我注意到只在文件名上使用 '/path/FILE_${array[ID]}.txt'
会显示所有正确的 ID,但是当同时使用两者时,'/path/FILE_${array[Da]}_${array[ID]}.txt'
就乱七八糟了
可以这样做
IFS=',' read -r -a array <<< "$input"
for((i=0;i<${#array[@]}-1;i+=2));do
touch "/path/FILE_${array[i]}_${array[i+1]}.txt"
done
awk 替代方法:
awk -F, '{ for(i=1;i<=NF;i+=2) if($i!="") system("touch FILE_"$i"_"$(i+1)".txt") }' input
检查结果:
> ls -1 FILE_*
FILE_300002_20170515.txt
FILE_400044_20170101.txt
FILE_500032_20170426.txt
system(command)
- 执行操作系统命令command
我正在尝试创建给定 ID 及其相应日期的文件。我想使用数组项来设置这些文件的名称。问题是结果不是我在创建文件时所期望的。非常感谢您的帮助。
期望输出:
我想创建以下格式的文件:
FILE_300002_20170515.txt
FILE_500032_20170426.txt
FILE_400044_20170101.txt
当前输出:
FILE_300002_400044.txt
FILE_300002_300002.txt
FILE_300002_500032.txt
文件示例:
这是我的输入文件的内容:
300002,20170515,500032,20170426,400044,20170101
我的代码:
IFS=',' read -r -a array <<< "$input"
ini=1
ID=0
Da=1
num="${#array[@]}"
let num=num/2
while [ $ini -le $num ];do
touch "/path/FILE_${array[Da]}_${array[ID]}.txt"
let ini=ini+1
let Da=Da+2
let ID=ID+2
done
****我注意到只在文件名上使用 '/path/FILE_${array[ID]}.txt'
会显示所有正确的 ID,但是当同时使用两者时,'/path/FILE_${array[Da]}_${array[ID]}.txt'
就乱七八糟了
可以这样做
IFS=',' read -r -a array <<< "$input"
for((i=0;i<${#array[@]}-1;i+=2));do
touch "/path/FILE_${array[i]}_${array[i+1]}.txt"
done
awk 替代方法:
awk -F, '{ for(i=1;i<=NF;i+=2) if($i!="") system("touch FILE_"$i"_"$(i+1)".txt") }' input
检查结果:
> ls -1 FILE_*
FILE_300002_20170515.txt
FILE_400044_20170101.txt
FILE_500032_20170426.txt
system(command)
- 执行操作系统命令command