Linux文件和目录操作命令

pwd:打印当前所在的路径

pwd是"print working directory"的缩写,功能是打印当前工作目录的绝对路径。通常情况下,使用pwd命令不需要带任何参数。

参数选项功能描述
-Llogical的缩写,表示显示逻辑路径(忽略链接文件),取PWD系统环境变量的值,不常用
-Pphysical的缩写,表示显示物理路径时如果当前目录路径是软链接文件,则会显示软链接文件对应的源文件,不常用

tree:以树形结构显示目录下的内容

功能是以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件。

语法格式:tree [选项] [目录]

参数选项和说明:

参数选项功能描述
-a显示所有文件,包括隐藏文件(以.开头的文件)
-d只显示目录
-f显示每个文件的全路径
-i不显示树枝,经常与-f参数配合使用
-L遍历目录的最大层数
-F对于不同类型的文件,在结尾加上不同的标识,类似ls的-F选项

mkdir:创建目录

语法格式:mkdir [选项] [目录]

参数选项和说明:

参数选项功能描述
-p递归创建目录
-m设置新创建目录的默认目录对应的权限
-v显示创建目录的过程
[root@liujianfan 19:07:31 /test]# mkdir -m 333 /test/hhzz
[root@liujianfan 19:07:59 /test]# ls -ld /test/hhzz
d-wx-wx-wx. 2 root root 4096 Nov 10 19:07 /test/hhzz
[root@liujianfan 19:08:09 /test]# 

创建多级目录的技巧:

在/hai目录下创建两个目录:dir1和dir2,并且dir1、dir2目录下都有dir11、dir22:

[root@liujianfan 19:11:44 ~]# mkdir -p /hai/{dir1,dir2}/{dir11,dir22}
[root@liujianfan 19:20:35 ~]# tree /hai
/hai
├── dir1
│   ├── dir11
│   └── dir22
└── dir2
    ├── dir11
    └── dir22

6 directories, 0 files
[root@liujianfan 19:20:39 ~]# 

在/hello目录下创建dir1old~dir6old,比起它们的目录下都有目录a~i:

[root@liujianfan 19:20:39 ~]# mkdir -p /hello/dir{1..6}old/{a..i}
[root@liujianfan 19:22:59 ~]# tree /hello
/hello
├── dir1old
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   ├── f
│   ├── g
│   ├── h
│   └── i
├── dir2old
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   ├── f
│   ├── g
│   ├── h
│   └── i
├── dir3old
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   ├── f
│   ├── g
│   ├── h
│   └── i
├── dir4old
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   ├── f
│   ├── g
│   ├── h
│   └── i
├── dir5old
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   ├── f
│   ├── g
│   ├── h
│   └── i
└── dir6old
    ├── a
    ├── b
    ├── c
    ├── d
    ├── e
    ├── f
    ├── g
    ├── h
    └── i

60 directories, 0 files
[root@liujianfan 19:23:07 ~]# 

touch:创建空文件和改变文件和目录的时间戳

语法格式:touch [选项] [文件]

参数选项功能描述
-a只更改指定文件的最后访问时间
-d STRING使用字符串STRING代表的时间作为模板设置指定文件的时间属性
-m只更改指定文件的最后修改时间
-r file将指定文件的时间属性设置为与模板文件file的时间属性相同
-t STAMP使用[[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性。格式的含义从左到右依次为:世纪、年、月、日、时、分、秒

*使用stat命令可以查看文件的时间戳属性

[root@liujianfan 01:34:00 ~]# touch new
[root@liujianfan 01:34:41 ~]# stat new
  File: ‘new’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 77463376    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-03 01:34:41.667556384 +0800
Modify: 2019-03-03 01:34:41.667556384 +0800
Change: 2019-03-03 01:34:41.667556384 +0800
 Birth: -
[root@liujianfan 01:34:48 ~]# 

文件的时间戳属性分为访问时间、修改时间、状态改变时间。

修改最后访问时间:

[root@liujianfan 01:34:48 ~]# touch -a new
[root@liujianfan 01:35:29 ~]# stat new
  File: ‘new’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 77463376    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-03 01:35:29.616560085 +0800
Modify: 2019-03-03 01:34:41.667556384 +0800
Change: 2019-03-03 01:35:29.616560085 +0800
 Birth: -
[root@liujianfan 01:35:32 ~]# 

修改最后修改的时间:

[root@liujianfan 01:35:32 ~]# touch -m new
[root@liujianfan 01:36:06 ~]# stat new
  File: ‘new’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 77463376    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-03 01:35:29.616560085 +0800
Modify: 2019-03-03 01:36:06.113562902 +0800
Change: 2019-03-03 01:36:06.113562902 +0800
 Birth: -
[root@liujianfan 01:36:08 ~]# 

指定时间属性修改/创建文件:

[root@liujianfan 01:36:08 ~]# touch -d 20201111 new2
[root@liujianfan 01:37:37 ~]# ls -l new2
-rw-r--r-- 1 root root 0 Nov 11  2020 new2

ls:显示目录下的内容及其相关属性信息

语法格式:ls [选项] [文件或目录]

参数选项功能描述
-l使用长格式列出文件及目录信息
-a显示目录下的所有文件
-t根据最后修改时间(mtime)排序,默认是以文件名排序
-r依相反次序排序
-F在条目后面加上文件类型的指示符号
-p只在目录后面加上"/"
-i显示inode节点信息
-d当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接
-h以符合人类可读的形式显示文件或者目录的大小,如1KB、22MB等
-A列出所有文件,但是不包括"."和".."这两个目录
-S根据文件大小排序
-R递归列出所有子目录
-x逐行列出项目而不是逐栏列出
-X根据扩展名排序
-c根据状态改变时间排序
-u根据最后访问时间排序
--color={never,always,auto}不同的文件类型显示不同的参数颜色,never表示不显示,always表示总是显示,auto表示自动显示
--full-time以完整的时间格式输出
--time-style={full-iso,long-iso,iso,locate}以不同的时间格式输出,long-iso效果最好
--time={atime,ctime}按不同的时间属性输出,不加此参数默认以最后修改时间输出

显示完整的时间属性:

[root@liujianfan 02:21:57 ~]# ls -al --time-style=long-iso
total 736696
dr-xr-x---.  9 root root      4096 2019-03-03 01:46 .
dr-xr-xr-x. 26 root root      4096 2019-01-16 19:49 ..
-rw-r--r--.  1 root root         0 2018-10-23 04:38 04:38:10.tex
-rw-r--r--.  1 root root         0 2018-10-24 08:41 1
drwxr-xr-x.  3 root root        16 2018-10-24 08:38 122
drwxr-xr-x.  5 root root        32 2018-10-24 08:39 156

ls -F命令的输出:

1.目录的结尾会加上"/"

2.普通文件结尾会加上"*"

3.套接字文件结尾会加上"="

4.FIFOs文件会加上"|"

5.符号链接文件会加上"@"

cp:复制文件或目录

语法格式:cp [选项] [源文件] [目标文件]

参数说明:

参数选项功能描述
-p复制文件时保持源文件的所有者、权限信息及时间属性
-d如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保留符号链接所指向的目标文件或目录
-r递归复制目录
-a等同于上面的p、d、r这三个选项功能的总和
-i覆盖已有文件前提示用户确认
-t默认情况下命令格式是"cp 源文件 目标文件",使用该参数可以颠倒源目文件的顺序:cp 目标文件 源文件

mv:移动或重命名文件

语法格式:mv [选项] [目标文件]

参数选项说明:

参数选项功能描述
-f若目标文件已经存在,则不会询问而是直接覆盖
-i若目标文件已经存在,则会询问是否覆盖
-n不覆盖已存在的文件
-t指定mv的目标目录,适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
-u在源文件比目标文件新,或目标文件不存在时才进行移动

rm:删除文件或目录

语法格式:rm [选项] [文件或目录]

参数选项功能描述
-f强制删除。忽略不存在的文件,不提示确认
-i在删除前需要确认
-I在删除超过三个文件或者递归删除前需要确认
-r递归删除目录

ln:硬链接与软链接

语法格式:ln [选项] [源文件或目录] [目标文件或目录]

参数选项功能描述
无参数创建硬链接
-s创建软链接(符号链接)

硬链接和软链接:

硬链接:硬链接生成的是普通文件(-字符),相当于文件的另外一个入口。具有相同的inode节点号的多个文件互为硬链接文件。删除硬链接文件或者源文件的任何一个,文件实体没有被真正删除。

软链接:目标文件不能事先存在,软链接生成的是符号链接文件(l类型),类似于windows的快捷方式,里面存放的是源文件的路径,指向源文件实体。即使删除了源文件,软链接文件依然存在,但是无法访问源文件。软链接和源文件是不同类型的文件,inode号也不同。

注意:对于目录,不可以创建硬链接,但是可以创建软链接。需要注意的是,目录是可以跨文件系统的。

find:查找目录下的文件

语法格式:find [选项] [路径] [操作语句]

find命令的详细语法:

find [选项] [路径] [expression]

               [expression包含options、tests、actions三个模块 ]

Options参数说明:

参数选项功能描述
-depth从指定目录下最深层的子目录开始查找
-maxdepth levels查找的最大目录级数,levels为自然数
-regextype type改变正则表达式的模式,默认为emacs

Tests模块参数说明:

参数选项功能描述
-mtime [-n,n,+n]按照文件的修改时间来查找文件,-n表示文件修改时间距离现在n天之内,+n表示距离现在n天以前
-atime按照文件的访问时间来查找文件
-ctime按照文件的改变时间来查找文件
-amin按照文件的访问时间来查找文件,单位为分钟
-cmin按照文件的改变时间来查找文件,单位为分钟
-mmin按照文件的修改时间来查找文件,单位为分钟
-group按照文件所属的组来查找文件
-name按照文件名称来查找文件,只支持*、?、[]等等通配符
-newer查找更改时间比指定文件新的文件
-nogroup查找没有有效用户组的文件,该文件所属的组在/etc/groups中不存在
-nouser查找没有有效属主的文件,该文件的属主在/etc/passwd中不存在
-path指定路径样式,配合-prune参数排除指定目录
-perm按照文件权限来查找文件
-regex接正则表达式
-iregex接正则表达式,不区分大小写
-size n[cwbkMG]查找文件长度为n块的文件,带有cwbkMG时表示文件长度以字节计
-user按照文件属主来查找文件
-type查找某一类型的文件:b、c、d、p(管道文件)、l、f、s、D

Actions模块参数说明:

参数选项功能描述
-delete将查找出的文件删除
-exec对匹配的文件执行该参数所给出的shell命令
-ok和-exec作用相同,但是会让用户先确定是否执行
-prune使用这一选项可以使find命令不在当前指定的命令中查找
-print将匹配到的文件输出到标准输出
OPERATORSfind支持逻辑运算符
!取反
-a取交集,全拼为and
-o取并集,全拼为or

例子:

1.查找当前目录下,两天内受到访问的文件:
[root@liujianfan 20:15:26 ~]# find . -atime -2
2.查找/var/log/下6天以前以".log"结尾的被修改的文件:
[root@liujianfan 20:23:07 ~]# find /var/log/ -mtime +6 -name "*.log"
3.查找当前目录下的所有目录:
[root@liujianfan 20:23:26 ~]# find . -type d
4.查找当前目录下不是目录的文件:
[root@liujianfan 21:33:23 ~]# find . ! -type d
5.按照目录或者文件的权限来查找文件:
[root@liujianfan 21:34:29 ~]# find . -perm 666
6.查找当前目录下大小是100字节的文件文件:
[root@liujianfan 21:35:27 ~]# find . -size 100c
7.在当前目录下查找更改时间比文件file.txt新的文件:
[root@liujianfan 21:37:50 ~]# find . -newer file.txt
8.查找当前目录下更改时间在14天以前的文件,并且在-exec选项中使用rm命令删除:
[root@liujianfan 21:43:20 ~]# find . -type f -mtime +14 -exec rm {} \;
9.使用-exec选项的安全模式-ok:
[root@liujianfan 21:43:20 ~]# find . -type f -mtime +14 -ok rm {} \;

xargs:将标准输入转换为命令行参数

语法格式:xargs [选项]

参数说明:

参数选项功能描述
-n指定每行的最大参数量n,可以将标准输入的文本划分为多行,每行n个参数,默认空格分隔
-d自定义分隔符
-i以{}替代前面的结果
-I指定一个符号替代前面的结果,而不用-i参数默认的{}
-p提示让用户确认是否执行后面的命令
-0用null代替空格作为分隔符

多行文本输入变单行:

[root@liujianfan 22:01:58 /text]# cat tt.txt 
1 2 3 4 5 6
7 8 9 
10 11
[root@liujianfan 22:02:49 /text]# xargs <tt.txt 
1 2 3 4 5 6 7 8 9 10 11

通过-n参数指定每行的输出个数:

[root@liujianfan 22:04:14 /text]# xargs -n 3 < tt.txt           
1 2 3
4 5 6
7 8 9
10 11

使用-d选项自定义分隔符:

[root@liujianfan 06:20:54 /]# echo hzdXhzdXhzdXhzdX | xargs -d X -n 2
hzd hzd
hzd hzd

rename:重命名文件

语法格式:rename from to file

from:代表需要替代或者需要处理的字符(一般是文件名的一部分)

to:把前面的from代表的内容替换为to代表的内容

file:需要处理的文件。

[root@liujianfan 06:24:47 /test]# ls
access_www_2018-10-01.log  access_www_2018-10-08.log  access_www_2018-10-15.log  access_www_2018-10-22.log
access_www_2018-10-02.log  access_www_2018-10-09.log  access_www_2018-10-16.log  access_www_2018-10-23.log
access_www_2018-10-03.log  access_www_2018-10-10.log  access_www_2018-10-17.log  access_www_2018-10-24.log
access_www_2018-10-04.log  access_www_2018-10-11.log  access_www_2018-10-18.log  access_www_2018-10-25.log
access_www_2018-10-05.log  access_www_2018-10-12.log  access_www_2018-10-19.log
access_www_2018-10-06.log  access_www_2018-10-13.log  access_www_2018-10-20.log
access_www_2018-10-07.log  access_www_2018-10-14.log  access_www_2018-10-21.log
[root@liujianfan 06:24:48 /test]# rename .log .jpg *
[root@liujianfan 06:25:14 /test]# ls
access_www_2018-10-01.jpg  access_www_2018-10-08.jpg  access_www_2018-10-15.jpg  access_www_2018-10-22.jpg
access_www_2018-10-02.jpg  access_www_2018-10-09.jpg  access_www_2018-10-16.jpg  access_www_2018-10-23.jpg
access_www_2018-10-03.jpg  access_www_2018-10-10.jpg  access_www_2018-10-17.jpg  access_www_2018-10-24.jpg
access_www_2018-10-04.jpg  access_www_2018-10-11.jpg  access_www_2018-10-18.jpg  access_www_2018-10-25.jpg
access_www_2018-10-05.jpg  access_www_2018-10-12.jpg  access_www_2018-10-19.jpg
access_www_2018-10-06.jpg  access_www_2018-10-13.jpg  access_www_2018-10-20.jpg
access_www_2018-10-07.jpg  access_www_2018-10-14.jpg  access_www_2018-10-21.jpg

chattr:改变文件的扩展属性

语法格式:chattr [选项] [模式] [文件或者目录]

选项参数说明:

参数选项功能描述
-R递归更改目录属性
-V显示命令执行过程

模式参数说明:

参数选项功能描述
+增加参数
-移除参数
=更新为指定的参数
A告诉系统不要修改这个文件的最后访问时间
a只能向文件中添加数据,而不能删除,多用于服务器日志文件
i设定文件不能删除、改名、写入或者增加内容

设置只能往文件里面追加内容,但是不能删除文件:

[root@liujianfan 07:13:09 ~/test2]# chattr +a chattr.txt 
[root@liujianfan 07:13:24 ~/test2]# lsattr chattr.txt 
-----a---------- chattr.txt
[root@liujianfan 07:13:28 ~/test2]# 

root用户也无法删除,只能追加内容:

[root@liujianfan 07:13:28 ~/test2]# rm -f chattr.txt 
rm: cannot remove ‘chattr.txt’: Operation not permitted
[root@liujianfan 07:14:28 ~/test2]# echo hello >> chattr.txt 
[root@liujianfan 07:14:49 ~/test2]# cat chattr.txt 
hello
[root@liujianfan 07:14:53 ~/test2]# 

给文件加锁,设置为只读:

[root@liujianfan 07:16:34 ~/test2]# touch chattr2.txt
[root@liujianfan 07:17:00 ~/test2]# chattr +i chattr2.txt 
[root@liujianfan 07:17:09 ~/test2]# rm -f chattr2.txt 
rm: cannot remove ‘chattr2.txt’: Operation not permitted
[root@liujianfan 07:17:23 ~/test2]# echo hi >> chattr2.txt 
-bash: chattr2.txt: Permission denied
[root@liujianfan 07:17:34 ~/test2]#

转载于:https://www.cnblogs.com/hzdwwzz/p/10468595.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值