0%

linux文件操作命令

Linux 文件操作命令全解析:从创建到管理的完整指南

文件操作是 Linux 系统管理的核心内容,涉及创建、删除、查看、复制、移动等一系列操作。本文将详细介绍 Linux 中常用的文件操作命令,包括 touchrmcatcpmv 等,帮助你熟练掌握文件管理的各种技巧。

创建文件:touch 命令

touch 命令主要用于创建空文件,同时也能修改文件的时间戳(访问时间、修改时间)。

基本用法

1
touch [选项] 文件名

常用选项与示例

  • 创建空文件
1
2
3
4
5
6
7
8
# 创建单个文件
touch test.txt

# 创建多个文件
touch file1.txt file2.txt

# 批量创建文件(使用大括号扩展)
touch doc{1..5}.txt # 创建 doc1.txt 到 doc5.txt
  • 修改文件时间戳

    • -a:仅修改访问时间(文件被读取的时间)。
    • -m:仅修改修改时间(文件内容被修改的时间)。
    • -d "时间":指定时间(如 2023-10-01 12:00)。
    • -r 参考文件:将目标文件的时间同步为参考文件的时间。
    1
    2
    3
    4
    5
    6
    7
    8
    # 修改 test.txt 的访问时间为当前时间
    touch -a test.txt

    # 将 file2.txt 的时间同步为 file1.txt
    touch -r file1.txt file2.txt

    # 指定文件时间为 2023 年 1 月 1 日
    touch -d "2023-01-01" log.txt
  • 避免创建新文件

    1
    touch -c newfile.txt  # 若 newfile.txt 不存在,不创建;若存在,仅更新时间

删除文件:rm 命令

rm(remove)命令用于删除文件或目录,使用时需谨慎,删除后通常无法恢复。

基本用法

1
rm [选项] 文件/目录

常用选项与示例

  • 删除文件

    1
    2
    3
    4
    5
    # 删除单个文件(默认会提示确认)
    rm test.txt

    # 强制删除(不提示)
    rm -f data.txt
  • 删除目录

    • -r:递归删除目录及其中的所有内容。
    • -rf:强制递归删除(危险操作,谨慎使用)。
    1
    2
    3
    4
    5
    # 删除空目录(也可用 rmdir,但 rm -r 更通用)
    rm -r empty_dir

    # 强制删除非空目录(谨慎!)
    rm -rf old_project/
  • 删除前提示

    1
    rm -i important.txt  # 删除前询问确认(y 确认,n 取消)
  • 显示删除过程

    1
    rm -v *.log  # 显示删除的文件名

查看文件内容

file 命令:判断文件类型

1
2
3
file test.txt  # 输出:test.txt: ASCII text
file image.png # 输出:image.png: PNG image data, 800x600, 8-bit/color RGB, non-interlaced
file /dev/sda # 输出:/dev/sda: block special (8/0)(块设备)

stat 命令:查看文件详细信息

1
2
3
4
5
6
7
8
9
stat test.txt
# 输出示例:
# File: test.txt
# Size: 45 Blocks: 8 IO Block: 4096 regular file
# Device: fd00h/64768d Inode: 123456 Links: 1
# Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
# Access: 2023-10-01 10:00:00.000000000 +0800
# Modify: 2023-10-01 10:30:00.000000000 +0800
# Change: 2023-10-01 10:30:00.000000000 +0800
  • Access:访问时间(最后一次读取)。
  • Modify:修改时间(最后一次修改内容)。
  • Change:状态时间(最后一次修改权限 / 属性)。

cat 命令:查看文件内容(适合小文件)

1
2
3
4
5
6
7
8
# 查看文件内容
cat notes.txt

# 显示行号
cat -n script.sh

# 显示隐藏字符(如 Tab 显示为 ^I,换行符显示为 $)
cat -A config.ini

moreless:分页查看大文件

  • more:只能向下翻页,适合简单分页。

    1
    2
    more large_log.txt
    # 操作:空格(翻页)、Enter(换行)、b(上翻)、q(退出)
  • less:支持上下滚动、搜索,功能更强大(推荐)。

    1
    2
    less large_log.txt
    # 操作:↑↓(滚动行)、PageUp/PageDown(翻页)、/关键词(搜索)、q(退出)

headtail:查看文件首尾内容

  • head:默认显示文件前 10 行。

    1
    2
    head log.txt  # 前 10 行
    head -n 5 log.txt # 前 5 行
  • tail:默认显示文件后 10 行,支持实时监控。

    1
    2
    3
    tail log.txt  # 后 10 行
    tail -n 3 log.txt # 后 3 行
    tail -f app.log # 实时监控文件新增内容(常用于日志跟踪)
  • 组合使用

    1
    2
    # 显示第 1000-1500 行
    head -n 1500 large_file.txt | tail -n +1000

链接文件:ln 命令

Linux 支持两种链接:软链接(符号链接)和硬链接

软链接(类似 Windows 快捷方式)

  • 语法:ln -s 源文件 链接文件

  • 特点:

    • 软链接有独立的 inode,存储源文件的路径。
    • 源文件删除后,软链接失效(显示 “断链”)。
    • 可跨文件系统创建。
    1
    2
    3
    4
    5
    # 为 document.txt 创建软链接 doc_link
    ln -s document.txt doc_link

    # 查看链接(lrwxrwxrwx 表示软链接)
    ls -l doc_link # 输出:lrwxrwxrwx 1 user user 12 Oct 1 12:00 doc_link -> document.txt

硬链接

  • 语法:ln 源文件 链接文件(无 -s

  • 特点:

    • 与源文件共享同一个 inode,相当于文件的 “别名”。
    • 源文件删除后,硬链接仍可用(只要有一个链接存在,文件数据就不丢失)。
    • 不可跨文件系统创建,不支持目录。
    1
    2
    3
    4
    5
    # 为 data.txt 创建硬链接 data_hlink
    ln data.txt data_hlink

    # 查看 inode(两者相同)
    ls -i data.txt data_hlink # 输出:12345 data.txt 12345 data_hlink

复制文件:cp 命令

cp(copy)命令用于复制文件或目录。

基本用法

1
cp [选项] 源文件 目标路径

常用选项与示例

  • 复制文件到目录

    1
    2
    # 将 file.txt 复制到 /tmp 目录
    cp file.txt /tmp/
  • 复制文件并重命名

    1
    2
    # 将 file.txt 复制到 /tmp 并命名为 new_file.txt
    cp file.txt /tmp/new_file.txt
  • 复制目录

    • -r:递归复制目录(必须加,否则报错)。
    • -a:保留文件属性(权限、时间等)并递归复制(常用)。
    1
    2
    3
    4
    5
    # 复制 docs 目录到 /backup
    cp -r docs /backup/

    # 保留属性复制(适合备份)
    cp -a important_data /backup/
  • 强制覆盖与提示

    1
    2
    cp -f file.txt /tmp/  # 强制覆盖已存在文件
    cp -i file.txt /tmp/ # 覆盖前询问确认

移动 / 重命名文件:mv 命令

mv(move)命令可移动文件 / 目录,或在同一目录内重命名。

基本用法

1
mv [选项] 源文件 目标路径

常用选项与示例

  • 重命名文件

    1
    2
    # 在当前目录将 old.txt 重命名为 new.txt
    mv old.txt new.txt
  • 移动文件到目录

    1
    2
    # 将 report.pdf 移动到 /home/user/docs
    mv report.pdf /home/user/docs/
  • 移动多个文件

    1
    2
    # 将 file1.txt、file2.txt 移动到 /tmp
    mv file1.txt file2.txt /tmp/
  • 强制移动与提示

    1
    2
    mv -f data.txt /tmp/  # 强制覆盖目标文件
    mv -i data.txt /tmp/ # 覆盖前询问
  • 显示移动过程

    1
    mv -v *.log /var/log/  # 显示移动的文件名

比较文件:diff 命令

diff 命令用于逐行比较两个文件的差异,常用于版本对比。

基本用法

1
diff [选项] 文件1 文件2

常用选项与示例

  • 基本比较

    1
    2
    3
    4
    5
    diff config_old.ini config_new.ini
    # 输出示例(< 表示文件1内容,> 表示文件2内容):
    # 5c5
    # < timeout=30
    # > timeout=60
  • 忽略空格差异

    1
    diff -b file1.txt file2.txt  # 忽略行尾空格差异
  • 生成补丁文件(用于后续更新):

    1
    diff -u old.sh new.sh > update.patch  # 生成统一格式的补丁

去重行:uniq 命令

uniq 命令用于删除文件中连续的重复行,常与 sort 结合使用(先排序使重复行相邻)。

基本用法

1
uniq [选项] 输入文件 [输出文件]

常用选项与示例

  • 去除连续重复行

    1
    2
    # 假设文件 data.txt 内容:a\na\nb\nb\nb
    uniq data.txt # 输出:a\nb
  • 统计每行出现次数

    1
    2
    3
    4
    sort data.txt | uniq -c  # 先排序,再统计(-c 显示次数)
    # 输出示例:
    # 2 a
    # 3 b
  • 只显示重复行或唯一行

    1
    2
    sort data.txt | uniq -d  # 只显示重复行(出现次数 ≥2)
    sort data.txt | uniq -u # 只显示唯一行(出现次数 =1)

欢迎关注我的其它发布渠道