把服务器里的文件设置成txt,核心就是两步:要么用命令新建一个以.txt结尾的纯文本文件,要么用重命名或批量修改命令把已有文件的扩展名改成.txt,具体操作用touch、echo、mv、rename这些基础命令就能完成,Windows服务器则可以直接用记事本或ren命令,下文把不同场景拆开讲透。
服务器创建txt文件命令,老运维也会反复核对
不少人在服务器上想建一个txt文件,第一反应是“这不就右键新建吗”,真上手却发现图形界面根本不存在,服务器创建txt文件命令这件事,还得回到Linux和Windows两条线来看。
linux服务器新建txt文件,记住三组命令就够
以最常见的CentOS、Ubuntu、Debian为例,linux服务器新建txt文件有非常直接的逻辑,核心是一切皆文件,txt只是扩展名标签,内容本质是纯文本。
- 创建空txt文件:
touch /data/logs/test.txt,这条命令会生成一个0字节的空白txt,适合先占位、后写入的场景。 - 创建并写入单行内容:
echo "第一行内容" > /data/logs/test.txt,大于号是覆盖写入,双大于号>>是追加写入,这个细节刚入门的人最容易记混。 - 创建并编辑多行内容:
vim /data/logs/test.txt,进入后按i进入编辑模式,写完按Esc,输入wq回车保存退出,文件名只要带.txt后缀,vim就会按纯文本格式保存。
这里有个实际运维中很典型的坑:有些人用vim建完txt文件,发现中文乱码,这是因为服务器系统字符集默认UTF-8,而本地Windows记事本打开时默认ANSI,在vim里输入set fileencoding=utf-8再保存,或者后面单独做编码转换就能解决。
另一条高频命令是nano /data/logs/test.txt,nano对新手更友好,底部直接显示快捷键提示,写完后按Ctrl+O保存、Ctrl+X退出。
Windows服务器新建txt文件,远程桌面里的记事本最顺手
Windows Server系统自带图形桌面,服务器里怎么新建txt文件,其实跟在普通电脑上操作几乎一样。
- 在桌面或指定目录右键,选新建,再选文本文档。
- 打开记事本,写完内容后点击“文件”,选“另存为”,在“文件名”一栏输入带.txt后缀的名字,编码处可以手动选ANSI或UTF-8。
- 更快的命令行方式:在cmd里执行
type nul > C:\logs\test.txt,这条命令会创建一个空txt文件。
把已有文件改成txt格式,先分清是真转换还是只改后缀
日常接到“把服务器上某个文件设置成txt”的需求,多半不是为了新建,而是把现有的配置文件、日志文件、备份文件改成txt,这一步看着简单,但不少人在第一步就选错了路。
改后缀前先想清楚,内容编码会不会出问题
服务器上常见的.conf、.log、.yml文件,本质都是纯文本,只是扩展名不同,直接用mv old.conf new.txt,文件的内部编码和内容不变,访问方拿到手就是一个可以双击打开的txt文件,但有几类文件不适用这个逻辑:
.docx、.xlsx这类Office格式,内部是压缩XML结构,改后缀后打不开。.csv文件本身就是纯文本,后缀改成txt完全没问题。.html文件改后缀成txt后,浏览器里看源码正常,双击打开则只显示源码,这是正常现象。
业内运维专家指出,判断一个文件能不能直接改后缀,唯一的依据是是否为纯文本,用file test.txt命令可以查看文件真实类型,输出显示ASCII text或UTF-8 Unicode text就说明可以直接改。
服务器文件格式怎么改成txt,按工具分两种做法
服务器文件格式怎么改成txt,取决于你习惯用命令行还是面板,命令行场景更常见:
- 单文件重命名:
mv /data/www/api.conf /data/www/api.conf.txt - 复制一份再改名,保留原文件:
cp api.conf api.txt - 用
find定位再改名:find /data -name ".conf" -exec mv {} {}.txt \;
如果装了宝塔面板这类图形工具,在文件管理器里选中文件,直接点“重命名”,删除原扩展名、输入.txt后缀就行,面板操作适合不想记命令的人,但在批量场景下效率远低于命令行。
服务器批量改成txt后缀,用rename命令一步到位
处理日志文件时经常遇到几十个文件需要统一转成txt,手动一个个mv太慢,用循环和rename命令最省事。
Linux批量操作,rename命令语法要分清
rename命令有两种版本,CentOS/RHEL系默认的Perl版本和Debian/Ubuntu系的C版本,语法略有差异,这是很多人踩坑的地方。
- Debian/Ubuntu通用写法:
rename 's/\.log$/.txt/' .log,这条命令把所有以.log结尾的文件替换成.txt后缀。 - CentOS/RHEL兼容写法:
rename .log .txt .log,第一个参数是原字符串,第二个是新字符串。 - 不依赖rename的通用方案:
for i in .log; do mv "$i" "${i%.log}.txt"; done,这串循环在所有Linux发行版下都能跑。
批量操作最关键的一点是操作前先预览,可以先执行ls .log确认范围,再用echo代替mv打印将要执行的命令,确认无误后去掉echo真正执行。
宝塔面板操作批量改后缀,只适合少量文件
宝塔面板的文件管理支持多选文件,勾选后有一个“重命名”入口,可以批量加前缀后缀,但批量改后缀时,面板只是把正则逻辑封装成了界面,操作几十个文件时感受不明显,操作几百上千个文件时,卡顿和超时常见,这种情况还是回到SSH里跑命令。
服务器txt文件打不开怎么办,先查三个位置
改完后缀,双击打开发现打不开或者乱码,这个问题在搜索需求里出现的频率相当高,服务器txt文件打不开,原因基本不离这三点:
- 编码不匹配。Linux下创建的txt默认UTF-8,Windows记事本老版本默认ANSI,用
iconv -f UTF-8 -t GBK test.txt > test_gbk.txt可以转回ANSI编码,实际操作中,更简单的办法是让记事本打开时手动选“文件”菜单下的“另存为”,编码下拉框选ANSI。 - 权限不足。服务器上的文件默认权限可能是600或640,属主是root,本地或者网页端打开时提示权限不足,用
chmod 644 test.txt把权限放开为所有用户可读。 - 文件被锁或进程占用。如果这个txt是程序实时写入的日志,直接用编辑器打开会读取到不完整内容,先用
lsof /data/logs/test.txt确认占用进程,或者直接复制成副本再打开。
后缀改了但双击打开提示“文件已损坏”,通常是因为文件本身不是纯文本,用file test.txt查一下真实格式,如果是gzip compressed data或Microsoft Word 2007+,改后缀根本无用,需要先解压或导出再处理。
服务器文件设置成txt时,编码和BOM头不要忽略
很多人把文件改成txt后,放到网页上或者用程序读取,发现第一行开头多了几个乱码字符,这是UTF-8 BOM头在作怪。
- BOM是文件开头隐藏的3个字节EF BB BF,Windows记事本另存为UTF-8时默认带BOM,Linux下用
vim写一般不带。 - 带BOM的txt文件在服务器上用PHP或Python读取时,字符串拼接、JSON解析会首行报错,去掉BOM的方式是执行
sed -i '1s/^\xEF\xBB\xBF//' test.txt。 - 如果txt文件要面向浏览器下载,推荐统一用无BOM的UTF-8编码,兼容性更好。
要确认当前txt文件的具体编码,直接执行file test.txt,输出结果会准确标注UTF-8 Unicode (with BOM)或UTF-8 Unicode text等类型。
服务器文件设置成txt常见问题解答
Q:Linux服务器上能不能直接用echo命令创建包含多行内容的txt文件?
可以,用echo -e "第一行\n第二行\n第三行" > test.txt,-e参数会启用反斜杠转义,把\n解释为换行,更稳妥的方式还是用cat > test.txt后按Ctrl+D结束输入,这种写法的好处是不用手动记转义符。
Q:服务器里把php文件改成txt后,原来的网站功能会失效吗?
会直接失效,PHP文件改成.txt后缀后,Apache或Nginx会把它当成纯文本处理,不再执行里面的代码,网站对应页面会变成源码直接显示,行业共识认为,备份源码时想隐藏代码,应复制一份再改后缀,原文件保持原扩展名不动。
Q:宝塔面板里改txt后缀后文件内容还是乱码,怎么处理?
这是编码问题,不是重命名问题,把服务器上的txt文件下载到本地前,先确认文件编码是UTF-8还是GBK,如果原本是从Windows上传的GBK编码文件,在宝塔面板里把文件内容全选复制,新建一个txt,粘贴后点“保存”并在编码处选择“UTF-8”,再上传覆盖即可。
把服务器文件设置成txt,本质上是对纯文本文件的创建和重命名操作,掌握touch、mv、rename这几组常用命令,绝大多数场景都能覆盖,先确定文件内容是否为纯文本,再确认编码方向,最后动手改后缀,顺序反了往往就是乱码和打不开的根源。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/773515.html


