Linux文件目录管理
Linux文件目录:增删改查命令
| 命令 | 作用| |-----|-----| |增| |cp | 复制文件或目录| |mkdir | 创建目录| |touch | 创建新的空文件| |cat | 创建文件并写入内容| |删| | |rmdir | 用来删除空目录| |rm |删除文件和目录| |unlink |删除指定的文件| |改| |mv |移动或更名现有的文件或目录| |rename |用字符串替换的方式批量改变文件名| |chmod |更改文件目录权限| |chown |变更文件或目录的拥有者或所属群组| |chgrp |用来变更文件或目录的所属群组| |ln |连接文件或目录| |touch |改变文件目录时间| |chattr |更改文件属性,使用 "+" 设置属性,使用 "-" 用于取消| |查| | |ls |查看目录中的文件 | |tree |显示文件和目录由根目录开始的树形结构| |pstree |以树状图显示程序| |lsattr |显示文件的属性| ## 增加文件目录 ##### mkdir 创建目录 - 语法:mkdir [-p][--help][--version][-m <目录属性>][目录名称] - 参数: -m <目录属性> :建立目录时同时设置目录的权限。 -p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。 - 例子: ```shell mkdir dir1 创建一个叫做 'dir1' 的目录 mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 mkdir -m 666 dir 创建一个文件夹同时指定权限 ``` ##### touch 创建新的空文件 - 语法:touch [文件名称] - 实例:touch test.log ##### cp 复制文件或目录 - 语法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][--help][--spares=<使用时机>][--version][源文件或目录][目标文件或目录] [目的目录] - 参数: -a 此参数的效果和同时指定"-dpR"参数相同。 -b 删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。 -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。 -f 强行复制文件或目录,不论目标文件或目录是否已存在。 -i 覆盖既有文件之前先询问用户。 -l 对源文件建立硬连接,而非复制文件。 -p 保留源文件或目录的属性。 -P 保留源文件或目录的路径。 -r 递归处理,将指定目录下的文件与子目录一并处理。 -R 递归处理,将指定目录下的所有文件与子目录一并处理。 - 例子: ```shell cp file1 file2 复制一个文件 cp dir/* 复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录 ``` ##### cat 创建一个文件并添加内容,合并文件成新文件 ```shell # 只能创建新文件,不能编辑已有的文件,未设置结束符,则ctrl+C可以结束文件的录入 cat >filename # 创建新文件,并设置END作为结束符,当识别到用户输入END,则结束文件的录入,END可以自定义; cat >filename <<END ``` ```shell # 将file1 和file2 合并成一个新的文件file, # 如果file以前有内容,则先会清除它们然后再写入合并后的内容。 cat file1 file2 > file # 如果不想清除文件内容,则可以把单边号>变成了双边号>> cat file1 file2 >> file ``` ##### pushd 将目录加入命令堆叠中 - 语法:pushd(选项)(参数) - 选项: -n:只加入目录到堆叠中,不进行cd操作; +n:删除从左到右的第n个目录,数字从0开始; -n:删除从右到左的第n个目录,数字从0开始; - 参数: 目录:需要压入堆栈的目录。 ## 删除文件目录 ##### rmdir 用来删除空目录 - 语法:rmdir(选项)(参数) - 选项: -p:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除; -\-ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息; -v:显示命令的详细执行过程; - 当删除多个空目录时,目录名之间使用空格隔开。 ##### rm 删除文件和目录 - 语法:rm [-dfirv][--help][--version][文件或目录...] - 参数: -d 直接把欲删除的目录的硬连接数据删成0,删除该目录。 -f 强制删除文件或目录。 -i 删除既有文件或目录之前先询问用户。 -r 递归处理,将指定目录下的所有文件及子目录一并处理。 -v 显示指令执行过程。 - 例子: ```shell rm -f file1 删除一个叫做 'file1' 的文件 rmdir dir1 删除一个叫做 'dir1' 的目录 rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容 ``` ##### unlink 删除指定的文件 - 语法:unlink 文件 - 例子:unlink /opt/file2.txt ##### popd 用于删除目录栈中的记录 - 语法:ushd(选项)(参数) - 选项: +N:将第N个目录删除(从左边数起,数字从0开始); -N:将第N个目录删除(从右边数起,数字从0开始); -n:将目录出栈时,不切换目录。 ##### dirname 去除文件名中的非目录部分 - 语法:dirname(参数) - 实例 ```shell dirname // 结果为 / dirname /a/b/ 结果为:/a dirname a 结果为 . dirname a/b 结果为路径名 a ``` ## 修改文件目录 ##### mv 移动或更名现有的文件或目录 - 语法:mv [-bfiuv][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录] - 参数: -b 若需覆盖文件,则覆盖前先行备份。 -f 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。 -i 覆盖前先行询问用户。 -S<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。 -u 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。 -v 执行时显示详细的信息。 - 例子: ```shell mv dir1 new_dir 重命名/移动一个目录 ``` ##### rename 用字符串替换的方式批量改变文件名 - 语法 :rename(参数) - 参数: 原字符串:将文件名需要替换的字符串; 目标字符串:将文件名中含有的原字符替换成目标字符串; 文件:指定要改变文件名的文件列表。 - 实例 ```shell #将main1.c重命名为main.c rename main1.c main.c main1.c ``` - rename支持正则表达式 ```shell rename "s/AA/aa/" * //字母的替换,把文件名中的AA替换成aa rename "s//.html//.php/" * //修改文件的后缀 ,把.html 后缀的改成 .php后缀 rename "s/$//.txt/" * //批量添加文件后缀,把所有的文件名都以txt结尾 rename "s//.txt//" * //批量删除文件名 ,把所有以.txt结尾的文件名的.txt删掉 ``` ##### chmod 更改文件目录权限 - 语法: ```shell chmod [-cfRv][<权限范围>+/-/=<权限设置...>][文件或目录...] chmod [-cfRv][数字代号][文件或目录...] chmod [-cfRv][--reference=<参考文件或目录>][文件或目录...] ``` - 参数: -c : 若该文件权限确实已经更改,才显示其更改动作 -f : 若该文件权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有文件与子目录进行相同的权限变更( - 例子 ```shell chmod ugo+rwx directory1 置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 chmod o-t /home/public 禁用一个目录的 STIKY 位 chmod ug+w,o-x text chmod -R a+r * chmod 777 file ``` ##### chown 变更文件或目录的拥有者或所属群组 - 语法: ```shell chown [-cfhRv][--dereference][拥有者.<所属群组>][文件或目录..] chown [-chfRv][--dereference][.所属群组][文件或目录... ...] chown [-cfhRv][--dereference][--reference=<参考文件或目录>][文件或目录...] ``` - 参数: -c 效果类似"-v"参数,但仅回报更改的部分。 -f 不显示错误信息。 -h 只78对符号连接的文件作修改,而不更动其他任何相关文件。 -R 递归处理,将指定目录下的所有文件及子目录一并处理。 -v 显示指令执行过程。 -\-dereference 效果和"-h"参数相同。 -\-reference=<参考文件或目录> 把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同。 - 例子: ```shell chown user1 file1 改变一个文件的所有人属性 chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 chown user1:group1 file1 改变一个文件的所有人和群组属性 ``` ##### chgrp 用来变更文件或目录的所属群组 - 语法:chgrp(选项)(参数) - 选项: - -c:效果类似“-v”参数,但仅回报更改的部分; - -f:不显示错误信息; - -h:只对符号连接的文件作修改,而不是该其他任何相关文件; - -R:递归处理,将指令目录下的所有文件及子目录一并处理; - -v:显示指令执行过程; - -\-reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; - 参数: 组:指定新工作名称; 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。 ##### ln 连接文件或目录 - 语法: ```shell ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][源文件或目录][目标文件或目录] ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][源文件或目录...][目的目录] ``` - 参数: -b 删除,覆盖目标文件之前的备份。 -d 建立目录的硬连接。 -f 强行建立文件或目录的连接,不论文件或目录是否存在。 -i 覆盖既有文件之前先询问用户。 -n 把符号连接的目的目录视为一般文件。 -s 对源文件建立符号连接,而非硬连接。 - 例子: ```shell ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 ``` ##### touch 改变文件目录时间。 - 语法: ```shell touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间>][--help][--version][文件或目录...] touch [-acfm][--help][--version][日期时间][文件或目录...] ``` - 参数: - -a 只更改存取时间。 - -c 不建立任何文件。 - -d<时间日期> 使用指定的日期时间,而非现在的时间。 - -m 只更改变动时间。 - -r<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。 - -t<日期时间> 使用指定的日期时间,而非现在的时间。 - 例子: ```shell touch -t 0712250000 file1 修改一个文件的时间戳 (YYMMDDhhmm) ``` ##### chattr 更改文件属性,使用 "+" 设置属性,使用 "-" 用于取消 - 语法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...] - 参数: - -R 递归处理,将指定目录下的所有文件及子目录一并处理。 - -v<版本编号> 设置文件或目录版本。 - -V 显示指令执行过程。 - +<属性> 开启文件或目录的该项属性。 - -<属性> 关闭文件或目录的该项属性。 - =<属性> 指定文件或目录的该项属性。 - 补充说明:8种属性: - a:只允许以追加方式读写文件。 - b:不更新文件或目录的最后存取时间。 - c:允许这个文件能被内核自动压缩/解压。 - d:在进行文件系统备份时,dump程序将忽略这个文件。 - i:设置成不可变的文件,不能被删除、修改、重命名或者链接。 - s:允许一个文件被安全地删除 。 - S:一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。 - u:若文件被删除,系统会允许你在以后恢复这个被删除的文件。 - 例子: ```shell chattr +a file1 只允许以追加方式读写文件 chattr +c file1 允许这个文件能被内核自动压缩/解压 ``` ## 查找查看文件目录 ##### ls 查看目录中的文件 - 语法: ```shell ls [-参数][--block-size=<区块大小>][--color=<使用时机>][--format=<列表格式>][--full-time][--show-control-chars] [--sort=<排序方式>][--time=<时间戳记>[文件或目录...] ``` - 参数: - -a 下所有文件和目录。 - -A 显示所有文件和目录,但不显示现行目录和上层目录。 - -b 显示脱离字符。 - -B 忽略备份文件和目录。 - -c 以更改时间排序,显示文件和目录。 - -C 以又上至下,从左到右的直行方式显示文件和目录名称。 - -d 显示目录名称而非其内容。 - -D 用Emacs的模式产生文件和目录列表。 - -f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。 - -F 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。 - -g 次参数将忽略不予处理。 - -G 不显示群组名称。 - -h 用"K","M","G"来显示文件和目录的大小。 - -H 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。 - -i 显示文件和目录的inode编号。 - -I<范本样式> 不显示符合范本样式的文件或目录名称。 - -k 此参数的效果和指定"block-size=1024"参数相同。 - -1 每列仅显示一个文件或目录名称 - -L 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。 - -m 用","号区隔每个文件和目录的名称。 - -n 以用户识别码和群组识别码替代其名称。 - -N 直接列出文件和目录名称,包括控制字符。 - -o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。 - -p 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。 - -q 用"?"号取代控制字符,列出文件和目录名称。 - -Q 把文件和目录名称以""号标示起来。 - -r 反向排序。 - -R 递归处理,将指定目录下的所有文件及子目录一并处理。 - -s 显示文件和目录的大小,以区块为单位。 - -S 用文件和目录的大小排序。 - -t 用文件和目录的更改时间排序。 - -T<跳格字符> 设置跳格字符所对应的空白字符数。 - -u 以最后存取时间排序,显示文件和目录。 - -U 列出文件和目录名称时不予排序。 - -v 文件和目录的名称列表以版本进行排序。 - -w<每列字符数> 设置每列的最大字符数。 - -x 以从左到右,由上至下的横列方式显示文件和目录名称。 - -X 以文件和目录的最后一个扩展名排序。 - 例子: ```shell ls -F 查看目录中的文件 ls -l 示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 ``` ##### tree 显示文件和目录由根目录开始的树形结构 - 语法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...] - 参数: - -a 显示所有文件和目录。 - -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。 - -C 在文件和目录清单加上色彩,便于区分各种类型。 - -d 显示目录名称而非内容。 - -D 列出文件或目录的更改时间。 - -f 在每个文件或目录之前,显示完整的相对路径名称。 - -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。 - -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。 - -i 不以阶梯状列出文件或目录名称。 - -I<范本样式> 不显示符合范本样式的文件或目录名称。 - -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。 - -n 不在文件和目录清单加上色彩。 - -N 直接列出文件和目录名称,包括控制字符。 - -p 列出权限标示。 - -P<范本样式> 只显示符合范本样式的文件或目录名称。 - -q 用"?"号取代控制字符,列出文件和目录名称。 - -s 列出文件或目录大小。 - -t 用文件和目录的更改时间排序。 - -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。 - -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。 ##### pstree 以树状图显示程序。 - 语法:pstree [-acGhlnpuUV][-H <程序识别码>][<程序识别码>/<用户名称>] - 参数: - -a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。 - -c 不使用精简标示法。 - -G 使用VT100终端机的列绘图字符。 - -h 列出树状图时,特别标明现在执行的程序。 - -H<程序识别码> 此参数的效果和指定"-h"参数类似,但特别标明指定的程序。 - -l 采用长列格式显示树状图。 - -n 用程序识别码排序。预设是以程序名称来排序。 - -p 显示程序识别码。 - -u 显示用户名称。 - -U 使用UTF-8列绘图字符。 - -V 显示版本信息。 ##### lsattr 显示文件的属性 - 语法:lsattr [-adlRvV][文件或目录...] - 参数: -a 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。 -d 显示目录名称,而非其内容。 -l 此参数目前没有任何作用。 -R 递归处理,将指定目录下的所有文件及子目录一并处理。 -v 显示文件或目录版本。 -V 显示版本信息。 ##### stat 用于显示文件的状态信息 - 语法 :stat(选项)(参数) - 选项 -L:支持符号连接; -f:显示文件系统状态而非文件状态; -t:以简洁方式输出信息; - 参数 文件:指定要显示信息的普通文件或者文件系统对应的设备文件名。 ##### dirs 显示目录记录 - 语法:dirs(选项)(参数) - 选项: -c:删除目录栈中的所有记录 -l:以完整格式显示 -p:一个目录一行的方式显示 -v:每行一个目录来显示目录栈的内容,每个目录前加上的编号 +N:显示从左到右的第n个目录,数字从0开始 -N:显示从右到左的第n个日录,数字从0开始 - 参数: 目录:显示目录堆叠中的记录。 ##### basename 打印目录或者文件的基本名称 - 语法:basename(参数) - 参数: 文件:带路径信息的文件; 后缀:可选- 参数:,指定要去除的文件后缀字符串。 ##### file 用来探测给定文件的类型 - 语法:file(选项)(参数) - 选项 -b:列出辨识结果时,不显示文件名称; -c:详细显示指令执行过程,便于排错或分析程序执行的情形; -f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称; -L:直接显示符号连接所指向的文件类别; -m<魔法数字文件>:指定魔法数字文件; -v:显示版本信息; -z:尝试去解读压缩文件的内容。 - 参数 文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。 ##### 文件目录类型判断 - **通过字符判断:** ```shell -rw-r--r-- 1 root root 53K 03-16 08:54 install.log drwxr-xr-x 2 root root 4.0K 04-19 10:53 mydir crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty brw-r----- 1 root disk 3, 1 2006-04-19 /dev/hda1 lrwxrwxrwx 1 root root 33 04-19 11:27 kernel.rpm -> kernel-6.15-1.2025_FC5.i686.rpm ``` - 1、普通文件【第一个字符是 -】 - 2 目录【第一个字符是d】 - 3、字符设备文件【第一个字符是c】比如猫等串口设备 - 4、块设备文件【第一个字符是b】 比如硬盘,光驱等设备; - 5、套接口文件【第一个字符是l】 - 6、命名管道文件【第一个字符是p】 - **通过颜色判断: ** - 1、白色:表示普通文件 - 2、蓝色:表示目录 - 3、绿色:表示可执行文件 - 4、红色:表示压缩文件 - 5、浅蓝色:链接文件 - 6、红色闪烁:表示链接的文件有问题 - 7、黄色:表示设备文件 - 8、灰色:表示其他文件
顶部
收展
底部
[TOC]
目录
Linux文件目录:增删改查命令
Linux文件目录:权限管理
Linux文件目录:文件搜索
Linux文件目录:文件比较
Linux文件目录:过滤分割合并
LInux文件目录:文件传输
Rsync同步过程中遇到的常见问题
相关推荐
Linux打包压缩
Linux文本处理
Linux软件安装
Linux用户和用户组管理
Linux文件系统管理
Linux系统管理