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 批量复制文件
结合 find 和 xargs 按条件复制:
# 查找上级目录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