我需要一些帮助,试图找到一种有效的方法来解析大量小stdout文件的文件路径,并从中创建.csv文件。
示例:find $ PWD -name stdout
/根/尺寸/ 6 /色/红色/标准输出
/根/大小/ 3 /色/绿色/标准输出
运行此shell脚本将创建
6-red.csv
3-green.csv
此循环正在处理数千个文件,我正在尝试确保这是正确的解决方案。
任何方向都会非常有帮助。谢谢!
dirfiles=($(find $PWD -name stdout))
for outfile in "${dirfiles[@]}"
do
thisResult=$( cat $outfile )
IFS='/' read -a params <<< "$outfile"
for index in "${!params[@]}"
do
param=${params[index]}
if [ "$param" = "size" ]; then
size=${params[index+1]}
fi
if [ "$param" = "color"]; then
color=${params[index+1]}
fi
done
echo $thisResult 1>>outputCSV/${size}-{color}.csv
done
答案 0 :(得分:0)
使用perlrename(prename / pren / rename):
# Allow ** to match dirs
shopt -s globstar
rename 's:size/::;s:color/::;s:/:-:g;s:-stdout:.csv:' **/stdout
或者如果你想要一份副本:
find | grep stdout | parallel cp {} '{= s:[.]/::; s:size/::; s:color/::; s:/:-:g; s:-stdout:.csv: =}'