《小菜狗 Linux 操作系统快速入门笔记》(05.5)文件与目录管理命令【最新最全总结 - ls cd mkdir rmdir cp rm mv等命令】

目录

    • 1、总结【重要】
    • 2、列出路径下的文件与目录命令【ls】
    • 3、以树状图列出路径下的文件与目录命令【tree】
    • 4、切换目录命令【cd】
    • 5、创建新目录命令【mkdir】
    • 6、删除空目录命令【rmdir】
    • 7、创建新文件命令【touch】
    • 8、复制文件或目录命令【cp】
    • 9、删除文件或目录命令【rm】
    • 10、移动文件与目录命令【mv】
    • 11、显示当前目录路径命令【pwd】
    • 12、查看命令可执行文件的所在路径命令【which】


《小菜狗 Linux 操作系统快速入门笔记》目录:
《小菜狗 Linux 操作系统快速入门笔记》(01.0)文章导航目录【实时更新】

1、总结【重要】

Linux 系统中常用处理目录的命令:

  • ls :列出路径下的文件与目录;
  • tree:以树状图显示路径下的文件夹及文件;
  • cd :切换目录;
  • mkdir:创建一个新的目录;
  • rmdir:删除一个空的目录;
  • touch:创建一个新的文件
  • cp :复制文件或目录;
  • rm :移除文件或目录;
  • mv :移动文件与目录,或修改文件与目录的名称;
  • pwd:显示目前的目录;
  • which:查看命令的可执行文件所在路径;

你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp

2、列出路径下的文件与目录命令【ls】

在 Linux 系统当中, ls 命令可能是最常被运行的。

【语法】

ls [-aAdfFhilnrRSt] 文件名称或目录名称

【常用参数】

  • -a 或 --all:全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来;【常用】
  • -l:以长格式(详细信息)列出文件,包含文件的属性与权限等数据;【常用】
  • -d 或 --directory:仅列出目录本身,而不是列出目录内的文件数据;
  • -R 或 --recursive:若列出对象为路径且目录下有文件,则将所有文件依序列出;【常用】
  • -t:按照最后修改时间顺序列出文件,由旧到新;【常用】
  • -h 或 --human-readable:以人类可读的格式显示文件大小(K、M、G等);【常用】
  • -A 或 --almost-all:显示除 . 和 … 外的所有文件(包括隐藏文件);
  • -r 或 --reverse:反向排序(配合 -t、-S 等使用);
  • -S:按文件大小排序(大文件优先);
  • -F 或 --classify:在文件名后附加标识符(如 / 表示目录,* 表示可执行文件);
  • -i 或 --inode:显示文件的 inode 编号;
  • -n 或 --numeric-uid-gid:以数字形式显示 UID 和 GID(替代用户名和组名);
  • -1:每行只显示一个文件(默认在终端宽度不足时自动启用);
  • -m:以逗号分隔的列表形式显示文件;
  • -Q 或 --quote-name:用引号括住文件名(适用于含空格的文件名);
  • --group-directories-first:先显示目录,后显示文件;
  • --time-style=<格式>:自定义时间显示格式(如 +%Y-%m-%d);
  • --color:彩色输出(通常默认启用,–color=auto);
  • --help 在标准输出上显示帮助信息;
  • --version 在标准输出上输出版本信息并退出。

【举例】

  1. 列出根目录下的所有目录:
[root@xiaocaigou ~]# ls /
bin               dev   lib         media  net   root     srv  upload  www
boot              etc   lib64       misc   opt   sbin     sys  usr
home  lost+found  mnt    proc  selinux  tmp  var
  1. 详细列出当前目录所有文件(含隐藏文件):
[root@xiaocaigou ~]# ls -la
  1. 按大小反向排序文件(大文件优先):
[root@xiaocaigou ~]# ls -lShr
  1. 递归列出 /var/log 目录内容,并显示人类可读的文件大小:
[root@xiaocaigou ~]# ls -lhR /var/log
  1. 仅显示目录的详细信息(不递归):
[root@xiaocaigou ~]# ls -ld /etc
  1. 按修改时间排序(最新文件最后显示):
[root@xiaocaigou ~]# ls -ltr

【进阶用法】

  1. 当文件名包含空格、特殊字符或者开始字符为破折号时,可以使用反斜杠(\)进行转义,或者使用引号将文件名括起来。例如:
[root@xiaocaigou ~]# ls "my file.txt"    # 列出文件名为"my file.txt"的文件
[root@xiaocaigou ~]# ls my\ file.txt     # 列出文件名为"my file.txt"的文件
[root@xiaocaigou ~]# ls -- -filename     # 列出文件名为"-filename"的文件
  1. ls 命令还可以使用通配符进行模式匹配,例如 * 表示匹配任意字符,? 表示匹配一个字符,[…] 表示匹配指定范围内的字符。例如:
ls *.txt         # 列出所有扩展名为.txt的文件
ls file?.txt     # 列出文件名为file?.txt的文件,其中?表示任意一个字符
ls [abc]*.txt    # 列出以a、b或c开头、扩展名为.txt的文件

如列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面:

ls -ltr s*

3、以树状图列出路径下的文件与目录命令【tree】

将某路径下文件夹及文件以树状图展示,比 ls 命令直观!

【语法】

tree

【常用参数】

  • -a:显示所有文件和目录;
  • -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
  • -d:只显示目录;
  • -D:列出文件或目录的更改时间;
  • -f:在每个文件或目录之前,显示完整的相对路径名称;
  • -L:后接数字,显示到第几级子目录;
  • -s:列出文件或目录大小;
  • -t:用文件和目录的更改时间排序。

【举例】
以树状图列出 /etc/kernel 目录结构:
![[Pasted image 20250530152118.png]]

4、切换目录命令【cd】

cd是英语 change directory的缩写,用来切换工作目录的命令。

另外:~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, … 则表示目前目录位置的上一层目录。

【语法】

cd [相对路径或绝对路径]

【注意事项】

  1. 比如想要切换到 home 目录下,输入 cd /ho后,单次 tab键会自动补全路径!
  2. 如果不知道路径的全部名字,输入 cd /ho后,两次 tab键会列出所有可能的目录列表!
  3. cd 空格 或者cd ~ 表示返回用户主目录;
  4. cd .. 表示返回上一级目录(返回上两级则是 cd ../.. 表示返回上两级)!

【使用指导】

cd / :跳转到根目录
cd ~ :跳转到家目录
cd :不添加任何参数,也是回到家目录
cd ..         :跳转到上级目录
cd ./home     :跳转到当前目录的home目录下
cd /home/lion :跳转到根目录下的home目录下的lion目录

【举例】

  1. 切换到用户目录下
[root@xiaocaigou /]# cd home  
  1. 使用 mkdir 命令创建 kuangstudy 目录
[root@xiaocaigou home]# mkdir kuangstudy
  1. 进入 kuangstudy 目录
[root@xiaocaigou home]# cd kuangstudy
  1. 回到上一级
[root@xiaocaigou kuangstudy]# cd ..
  1. 回到根目录
[root@xiaocaigou kuangstudy]# cd /
  1. cd 空格 或者cd ~ 表示回到自己的家目录,亦即是 /root 这个目录
[root@xiaocaigou kuangstudy]# cd ~
  1. cd ../.. 表示返回上两级
[root@xiaocaigou kuangstudy]# cd ../..

5、创建新目录命令【mkdir】

【语法】

mkdir [-mp] 目录名称

【常用参数】

  • -m :配置文件的权限![直接配置,不需要看默认权限 umask 的脸色~]
  • -p :递归创建多级目录!不存在的就创建。

【举例】

  1. 进入我们用户目录下
[root@xiaocaigou /]# cd /home
  1. 创建一个 test 文件夹
[root@xiaocaigou home]# mkdir test
  1. 创建多层级目录
[root@xiaocaigou home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory

说明 mkdir 没办法直接创建多重目录啊!

加了这个 -p 的选项,可以自行帮你创建多层目录!

[root@xiaocaigou home]# mkdir -p test1/test2/test3/test4
  1. 创建权限为 rwx–x–x 的目录。
[root@xiaocaigou home]# mkdir -m 711 test2
[root@xiaocaigou home]# ls -l
drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
drwx--x--x 2 root root  4096 Mar 12 21:58 test2

6、删除空目录命令【rmdir】

【语法】

rmdir [-p] 目录名称

【常用参数】

  • -p :连同上一级『空的』目录也一起删除;

【使用指导】

这个 rmdir 命令仅能删除空的目录,你可以使用 rm 命令来删除非空目录,后面我们会讲!

【举例】

  1. 看看有多少目录存在?
[root@xiaocaigou home]# ls -l
drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
drwx--x--x 2 root root  4096 Mar 12 21:58 test2
  1. 可直接删除掉,没问题
[root@xiaocaigou home]# rmdir test
  1. 因为尚有内容,所以无法删除!
[root@xiaocaigou home]# rmdir test1
rmdir: failed to remove ‘test1’: Directory not empty
  1. 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
[root@xiaocaigou home]# rmdir -p test1/test2/test3/test4

7、创建新文件命令【touch】

touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

【语法】

touch [-acfm] 文件名称或目录名称…

【常用参数】

  • -a:改变档案的读取时间记录;
  • -m:改变档案的修改时间记录;
  • -c:假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样;
  • -f:不使用,是为了与其他 unix 系统的相容性而保留;
  • -r:使用参考档的时间记录,与 --file 的效果一样;
  • -d:设定时间与日期,可以使用各种不同的格式;
  • -t:设定档案的时间记录,格式与 date 指令相同;
  • --no-create:不会建立新档案;
  • --help:列出指令格式;
  • --version:列出版本讯息。

【使用指导】

创建新的文件(而不是文件夹)!

【举例】

  1. 在当前目录下,使用该指令创建一个空白文件"file":
[root@xiaocaigou home]# touch file
  1. 修改文件"testfile"的时间属性为当前系统时间:
(1)使用 ls 命令查看 testfile 文件的属性
#原来文件的修改时间为16:09
[root@xiaocaigou home]# ls -l testfile
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile

(2)执行指令"touch"修改文件属性
#修改文件时间属性为当前系统时间
[root@xiaocaigou home]# touch testfile

(3)再次查看该文件的时间属性
#查看文件的时间属性,修改后文件的时间属性为当前系统时间  
[root@xiaocaigou home]# ls -l testfile 
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile  

8、复制文件或目录命令【cp】

Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。

通过 cp 命令,用户可以将文件或目录从一个位置复制到另一个位置,同时可以选择保留原文件的属性(如权限、时间戳等)。

【语法】

cp [-adfilprsu] 来源(source) 目标(destination)

【常用参数】

  • -a:相当于 -pdr 的意思,至于 pdr 请参考下列说明;
  • -p:连同文件的属性一起复制过去,而非使用默认属性;
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -r:递归持续复制,用于目录的复制行为;【常用】
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;【常用】
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行【常用】
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !

【使用指导】

【cp file file_copy】:file 是目标文件,file_copy 是拷贝出来的文件;
【ccp file path】:把 file 文件拷贝到 path 目录下,并且文件名依然为 file;
【ccp file path/file_copy 】:把 file 文件拷贝到 path 目录下,文件名为 file_copy;
【ccp *.txt folder】:把当前目录下所有 txt 文件拷贝到 folder 目录下;

【注意事项】

  1. 如果目标路径是一个目录,cp 会将源文件或目录复制到该目录中。
  2. 如果目标路径是一个文件名,cp 会将源文件复制并重命名为目标文件名。
  3. 复制目录时,必须使用 -r 或 -R 选项,否则会报错。
  4. 如果目标文件已存在,默认情况下 cp 会覆盖它(除非使用 -i 选项)。

【举例】

  1. 复制文件到目标目录,将 file.txt 复制到 /path/to/destination/ 目录中
[root@xiaocaigou home]# cp file.txt /path/to/destination/
  1. 复制文件并重命名,将 file.txt 复制到 /path/to/destination/ 目录并重命名为 newfile.txt
[root@xiaocaigou home]# cp file.txt /path/to/destination/newfile.txt
  1. 递归复制目录,将 source_dir 目录及其内容递归复制到 destination 目录
[root@xiaocaigou home]# cp -r /path/to/source_dir /path/to/destination/
  1. 交互模式复制,如果目标位置已存在同名文件,会提示用户确认是否覆盖
[root@xiaocaigou home]# cp -i file.txt /path/to/destination/
如:
# n不覆盖,y为覆盖
[root@xiaocaigou home]# cp -i /root/install.sh /home
cp: overwrite ‘/home/install.sh’? y
  1. 复制文件并保留其原始属性(如权限、时间戳等)
[root@xiaocaigou home]# cp -p file.txt /path/to/destination/
  1. 仅复制更新的文件,仅当 file.txt 比目标文件新时才复制
[root@xiaocaigou home]# cp -u file.txt /path/to/destination/
  1. 显示复制过程
[root@xiaocaigou home]# cp -v file.txt /path/to/destination/

【进阶用法】

  1. 创建硬链接或符号链接
[root@xiaocaigou home]# cp -l file.txt /path/to/destination/  # 创建硬链接
[root@xiaocaigou home]# cp -s file.txt /path/to/destination/  # 创建符号链接
  1. 将多个文件复制到目标目录
[root@xiaocaigou home]# cp file1.txt file2.txt /path/to/destination/
  1. 使用通配符复制,复制所有 .txt 文件到目标目录
[root@xiaocaigou home]# cp *.txt /path/to/destination/
  1. 结合 find 命令复制特定文件,查找并复制所有 .log 文件到目标目录
[root@xiaocaigou home]# find /path/to/source -name "*.log" -exec cp {} /path/to/destination/ \;

9、删除文件或目录命令【rm】

用户可以用 rm 命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。

  • 对于链接文件,只是断开了链接,原文件保持不变。

删除文件和目录,由于 Linux 下没有回收站,一旦删除非常难恢复,因此需要谨慎操作!!

【语法】

rm [-rfi] 文件或目录

【常用参数】

  • -f:就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i:互动模式,在删除前会询问使用者是否动作;
  • -r:用于目录的删除!
  • -d:删除目录;
  • -v:详细显示进行的步骤;
  • --help:显示此帮助信息并离开
  • --version:显示版本信息并离开

【举例】

  1. 删除 new_file 文件;
[root@xiaocaigou home]# rm new_file
  1. 不管是文件夹还是文件都会直接强制删除,新手一定要小心!
[root@xiaocaigou home]# rm -rf new_file
  1. 同时删除 f1 f2 f3 这 3 个文件:
[root@xiaocaigou home]# rm f1 f2 f3
  1. 删除第一个字符为 ‘-’ 的文件 (例如 ‘-foo’)
[root@xiaocaigou home]# rm -- -foo
或者
[root@xiaocaigou home]# rm ./-foo

【整体演示】

  • 删除文件直接使用 rm 命令,若删除目录则必须配合选项"-r"。
[root@xiaocaigou home]# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y  
[root@xiaocaigou home]# rm  homework  
rm: 无法删除目录"homework": 是一个目录  
[root@xiaocaigou home]# rm  -r  homework  
rm:是否删除 目录 "homework"? y 

10、移动文件与目录命令【mv】

mv 命令不仅仅可以移动文件与目录,还可以修改文件与目录的名称`!

【语法】

mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory

【常用参数】

  • -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u:若目标文件已经存在,且 source 比较新,才会升级 (update);
  • -n: 不要覆盖任何已存在的文件或目录。

【使用指导】

mv file path --> 将 file 文件移动到 path 目录下;
mv new_folder path --> 将 new_folder 文件夹移动到 path 目录下;
mv *.txt folder --> 把当前目录下所有 txt 文件移动到 folder 目录下;
mv file new_file --> file 文件重命名为 new_file;

【举例】

  1. 对文件重命名,将文件 aaa 改名为 bbb :
[root@xiaocaigou home]# mv aaa bbb
  1. 将 info 目录放入 logs 目录中
  • 注意,如果 logs 目录不存在,则该命令将 info 改名为 logs
[root@xiaocaigou home]# mv info/ logs 
  1. 将 /usr/runoob 下的所有文件和目录移到当前目录下
[root@xiaocaigou home]# mv /usr/runoob/*  .

【整体演示】

# 复制一个文件到当前目录
[root@xiaocaigou home]# cp /root/install.sh /home

# 创建一个文件夹 test
[root@xiaocaigou home]# mkdir test

# 将复制过来的文件移动到我们创建的目录,并查看
[root@xiaocaigou home]# mv install.sh test
[root@xiaocaigou home]# ls
test
[root@xiaocaigou home]# cd test
[root@xiaocaigou test]# ls
install.sh

# 将文件夹重命名,然后再次查看!
[root@xiaocaigou test]# cd ..
[root@xiaocaigou home]# mv test mvtest
[root@xiaocaigou home]# ls
mvtest

11、显示当前目录路径命令【pwd】

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

【语法】

pwd [-P]

【常用参数】

  • -P :显示出实际路径,而非使用连接(link) 的路径;

【举例】

  1. 单纯显示出目前的工作目录
[root@xiaocaigou ~]# pwd
/root
  1. 如果是链接,要显示真实地址,可以使用 -P参数
[root@xiaocaigou /]# cd bin
[root@xiaocaigou bin]# pwd -P
/usr/bin

12、查看命令可执行文件的所在路径命令【which】

Linux下,每一个命令其实都是对应着一个可执行程序,在终端中输入命令,按回车的时候,就是执行了对应命令的程序,which命令本身对应的程序也存在于Linux中。

  • 总的来说一个命令就是一个可执行程序。

【语法】

which [a] 文件名称...

【举例】
使用指令"which"查看指令"bash"的绝对路径

[root@xiaocaigou ~]# which bash
/bin/bash

每日一更!

公众号、CSDN等博客:小菜狗编程笔记

谢谢点赞关注哈!目前在飞书持续优化更新~

日更较慢有需要完整笔记请私我,C/C++/数据结构-算法/单片机51-STM32-GD32-ESP32/嵌入式/Linux操作系统/uboot/Linux内核-驱动-应用/硬件入门-PCB-layout/Python/后期小程序和机器学习!

你可能感兴趣的:(《小菜狗,Linux,操作系统快速入门笔记》,linux,服务器,ubuntu,centos,操作系统,ls命令,cp命令)