Linux 常用的文件操作与序列生成命令

本文整理了 Linux 环境下文件编辑、序列生成、批量文件操作的常用命令及示例,重点区分关键命令的差异与实际应用场景。

一、文件内容操作

1.1 清空文件

两种清空文件命令的差异如下:

# 方式 1:echo "" > 文件名(文件会保留一个空行)
[root@why80 test]# echo "" > 33.txt  

# 方式 2:> 文件名(完全清空文件,等价于 cat /dev/null > 文件名)
[root@why80 test]# > 33.txt  

1.2 多行写入文件

(1)cat 命令实现

使用 >> 追加内容,> 会覆盖原有内容:

# 向 nginx.conf 追加多行配置
cat >> nginx.conf << EOF
worker_processes auto;
http {
    listen 80;
    server_name localhost;
}
EOF

(2)tee 命令实现

同时输出到屏幕和文件,支持 sudo 写入特权文件(cat 不支持):

# 方式 1:配合 cat << EOF
cat << EOF | tee -a multi_tee.txt
line1
line2
line3
EOF

# 方式 2:配合 echo -e
echo -e "line1\nline2\nline3" | tee -a multi_tee.txt

二、echo 命令用法

2.1 输出序列

(1)连续序列

# 连续整数
echo {1..5}  # 输出:1 2 3 4 5
# 连续小写字母
echo {a..e}  # 输出:a b c d e

(2)带步长的规律序列

# 生成1-10之间的奇数(步长为2)
echo {1..10..2}  # 输出:1 3 5 7 9

(3)离散序列(可用于批量操作)

# 输出离散数值
echo {1,5,9,10}  # 输出:1 5 9 10
# 批量创建目录(后缀统一为_test)
mkdir -p {1,2,3,9}_test

2.2 转义字符与格式控制

需配合 -e 参数启用转义,常用于脚本格式化输出:

# 换行(\n):输出多行内容
echo -e "line1\nline2\nline3"
# 制表符(\t):对齐输出
echo -e "name\tage\tgender"
# 取消末尾换行(-n):适合交互式输入
echo -n "请输入密码:"  # 光标停在该行末尾

三、序列生成工具

3.1 {} 符号(批量操作核心)

支持整数、字符、组合序列,简化批量命令。

(1)基础序列生成

# 连续整数(支持补零)
echo {1..5}        # 输出:1 2 3 4 5
echo {01..10}      # 输出:01 02 ... 10

# 按步长生成(如奇数)
echo {1..10..2}    # 输出:1 3 5 7 9

# 连续字符
echo {a..f}        # 输出:a b c d e f

# 组合序列(字符+整数)
echo {a..c}{1..3}  # 输出:a1 a2 a3 b1 b2 b3 c1 c2 c3

(2)典型应用:快速备份文件

等价于 cp 原文件 原文件.bak

cp yum.conf{,.bak}  # 备份 yum.conf 为 yum.conf.bak

3.2 seq 命令(与 {} 互补)

适合生成复杂数值序列(支持步长、格式):

# 生成1-5(等价于{1..5})
seq 5  # 输出:1 2 3 4 5(分行)

# 生成1-10,步长2(等价于{1..10..2})
seq 1 2 10  # 输出:1 3 5 7 9(分行)

# 生成补零序列(等价于{01..05})
seq -w 01 5  # 输出:01 02 03 04 05(分行)

# 与echo结合输出为单行
echo $(seq 1 2 10)  # 输出:1 3 5 7 9

四、批量文件操作

4.1 批量复制文件

结合 findxargs 按条件复制:

# 查找上级目录find下所有.conf文件,复制到当前目录
find ../find/ -name "*.conf" | xargs cp -t ./  
# 说明:-t ./ 指定目标目录为当前目录

4.2 批量重命名文件

通过循环替换文件后缀(例:.txt 改为 .bak):

# 先创建测试文件
touch {1..5}.txt
# 批量重命名
for file in *.txt; do mv $file ${file%.txt}.bak; done