You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:53:15