求编写Bash脚本:补全当前目录下不足10行的TXT文件
Bash脚本实现TXT文件补全至10行
直接遍历当前目录的TXT文件,逐个判断并处理,比存数组更简单可靠:
#!/bin/bash # 遍历当前目录下所有txt文件(不递归) for file in ./*.txt; do # 跳过不存在的文件(比如当前目录无txt文件时) [[ -f "$file" ]] || continue # 获取文件当前行数(用<避免wc输出文件名) line_count=$(wc -l < "$file") # 行数≥10则跳过 (( line_count >= 10 )) && continue # 计算需要补充的行数 need_lines=$((10 - line_count)) # 从当前行数+1开始,生成带编号的n/a行并追加到文件 for ((i=line_count+1; i<=10; i++)); do echo "$i. n/a" >> "$file" done done
关键说明:
- 用
./*.txt遍历当前目录的TXT文件,既避免递归,又能自动处理带空格的文件名(只要用双引号包裹变量"$file") wc -l < "$file"只输出纯行数,不会附带文件名,方便后续数值计算- 内层循环生成从当前行数+1到10的序号行,完全贴合你给出的示例效果
你原数组方法的问题:
array=( $(find ... | xargs wc -l) )会把wc -l的输出(比如4 test.txt)拆分成数组元素4、test.txt,如果文件名带空格,会被拆成多个元素,后续循环处理必然出错,不如直接遍历文件更稳妥。
内容的提问来源于stack exchange,提问作者NewbieCabbage
相关产品推荐
相关产品推荐

