Linux文件与目录管理

路径

绝对路径:一定从/(根目录)写起。

相对路径:不从/(根目录)写起,由相对当前目录写起。

目录

常见目录:

  • .  代表此层目录
  • ..  代表上层目录
  • –  代表前一个工作目录
  • ~  代表当前用户家目录
  • ~account  代表account这个用户的家目录

变换目录

cd 【相对路径或绝对路径】

显示当前目录

pwd

建立一个新目录

mkdir 【-mp】 目录名称

-m:建立时配置目录权限,不受umask限制。

-p:可递归建立目录

例:

建立权限为 rwx–x–x的目录

mkdir -m 711 mulu1

同时建立多个嵌套目录

mkdir -p /tmp/test1/test2/test3

删除一个空目录

rmdir

显示指定目录下的内容

常用命令:

ls

  • -a  全部的文件,包括隐藏文件(以.开头的文件)。
  • -d  仅列出目录本身,不显示目录内文件数据。
  • -l  显示文件属性与权限等信息。

复制

常用命令:

cp 【选项】 源文件 目标文件

cp 【选项】 源文件1 源文件2 源文件3 … 目标目录

  • -a  将文件所有属性复制到新文件。
  • -d  若源文件为链接文件,则复制链接文件属性而非文件本身。
  • -f  强制,若目标文件已存在且无法开启,则移除后再尝试一次。
  • -i  若目标文件已存在,在覆盖时会询问动作的进行。
  • -p  连同文件的属性(权限、用户、时间)一起复制,而非使用默认属性(备份常用)
  • -r  递归 持续复制,用于目录的复制。

链接

硬链接:ln 源文件 链接文件

软链接:ln -s 源文件 链接文件

建立链接使用绝对路径

[wenzi@wenzi ~]$ll
total 4
drwxrwxr-x 2 wenzi wenzi 28 Apr 13 09:35 aaa
-rw-rw-r-- 1 wenzi wenzi  4 Apr 13 09:27 cs

绝对路径写法

[wenzi@wenzi ~]$ln -s /home/wenzi/cs /home/wenzi/aaa/ddd

[wenzi@wenzi ~]$ln -s `pwd`/cs /home/wenzi/aaa/ddd

若使用相对路径错误示范

删除

常用命令:

rm 【选项】 文件或目录

  • -f  强制执行,忽略不存在的文件,不会出现告警信息。
  • -i  互动模式,删除前会询问使用者是否动作。
  • -r  递归删除,最常用在目录的删除。

移动

常用命令:

mv 【选项】 源文件 目标文件

mv 【选项】 源文件1 源文件2 … 目标目录

  • -f  强制执行,如果目标文件已存在,不会询问直接覆盖。
  • -i  若目标文件已存在,会询问是否覆盖。
  • -u  若目标文件已存在,且源文件较新,才会更新。

查看文件内容

cat  从第一行开始显示文件内容

tac  从最后一行开始显示文件内容

nl  显示的时候标明行号

more  一页一页显示文件内容

less  以较少内容显示文件内容

head  只查看前n行文件内容。head -n 行数 文件

tail  只看末n行文件内容。tail -n 行数 文件

od  以二进制形式查看文件内容

修改文件时间或建立新文件

  • mtime  当文件的内容数据变化时,就会更新此时间。通过 ll 命令查看
  • ctime  当文件的属性权限变化时,就会更新此时间。通过 ll --time=ctime 命令查看;复制文件时ctime没有办法复制。
  • atime  当文件的内容被读取时,就会更新此时间。通过 ll --time=atime 命令查看

常用命令:

touch 【选项】 文件

  • -a  仅修改atime。
  • -c  仅修改文件的时间为当前时间,若该文件不存在则不建立新文件。
  • -m  仅修改mtime。
  • -d  修改为目的日期,格式 -d 日期或时间
  • -t  修改为目的日期,格式【YYMMDDhhmm】

实例:

通过touch命令新建文件test,并查看mtime。

[root@VM-16-5-centos ~]# touch test
[root@VM-16-5-centos ~]# ll
total 0
-rw-r--r-- 1 root root 0 Jan  1 01:18 test

查看ctime。

[root@VM-16-5-centos ~]# chown wzy test 
[root@VM-16-5-centos ~]# ll --time=ctime
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:21 test

查看atime。

[root@VM-16-5-centos ~]# cat test 
[root@VM-16-5-centos ~]# ll --time=atime
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:22 test

将test文件修改为2天前。

[root@VM-16-5-centos ~]# touch -d "2 days ago" test 
[root@VM-16-5-centos ~]# date;ll;ll --time=atime;ll --time=ctime
Sat Jan  1 01:35:12 CST 2022
total 0
-rw-r--r-- 1 wzy root 0 Dec 30 01:34 test
total 0
-rw-r--r-- 1 wzy root 0 Dec 30 01:34 test
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:34 test

将test文件修改为2022年7月29日07时29分

[root@VM-16-5-centos ~]# touch -t 202207290729 test 
[root@VM-16-5-centos ~]# date;ll;ll --time=atime;ll --time=ctime
Sat Jan  1 01:37:33 CST 2022
total 0
-rw-r--r-- 1 wzy root 0 Jul 29  2022 test
total 0
-rw-r--r-- 1 wzy root 0 Jul 29  2022 test
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:37 test

将文件时间修改为当前时间

[root@VM-16-5-centos ~]# touch -c test 
[root@VM-16-5-centos ~]# date;ll;ll --time=atime;ll --time=ctime
Sat Jan  1 01:39:07 CST 2022
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:39 test
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:39 test
total 0
-rw-r--r-- 1 wzy root 0 Jan  1 01:39 test

在以上测试中,ctime的时间记录的总是刷新为当前时间。

查找指令

which 【选项】命令

  • -a  将所有path包含的目录中可以找到的指令均列出,不止第一个被找到的指令名称。

which 是根据 PATH 这个环境变量包含的路径去寻找对应的完整文件名称。

例:查找ls命令的完整文件名。

命令:which ls  结果:/usr/bin/ls

查找文件

whereis 【选项】文件名

  • -l  列出whereis查找时涉及的目录。

locate【选项】关键字

  • -i  忽略大小写差异。
  • -c  不显示文件或目录名称,仅计算找到的文件数量。
  • -l  显示几行。
  • -S  显示locate所使用的数据库文件的相关信息,包括该数据库记录的文件或目录数量。

locate寻找到数据是由已建立的数据库 /var/lib/mlocate/ 里面查找的。数据库默认每天更新一次,因此当你新建一个文件时,会提示找不到,可通过 updatedb 更新数据库即可。

find【路径】【选项】【动作】

与时间相关选项,-atime、-ctime、-mtime,此处以-mtime为例

  • -mtime n:n为数字,意义为在n天之前的【一天之内】被更改过内容的文件。即(n+1)当天
  • -mtime +n:列出在n天之前【不含n天本身】被更改过内容的文件。即>=(n+1)天
  • -mtime -n:列出在n天之内【含n天本身】被更改过内容的文件。即<=n天
  • -newer file:file为一个已存在文件,列出比file新的文件。

例:

列出系统24小时内更改过内容的文件。

find -mtime 0

列出系统三天前的24小时内更改过内容的文件。

find -mtime 3

列出 /etc 目录下文件日期比 /etc/passwd 新的文件。

find /etc -newer /etc/passwd

与使用者或组相关选项

  • -uid n:n为数字,这个数字是用户的账号ID,即UID。/etc/passwd 文件中与账号名称对应的数字。
  • -gid n:n为数字,这个数字是组名的账号ID,即GID。/etc/group 文件中与组名对应的数字。
  • -user name:name是用户名。
  • -group name:name是组名。
  • -nouser:寻找文件拥有者不在 /etc/passwd 的用户。
  • -nogroup:寻找文件用户组不在 /etc/group 的用户组。

例:

查询系统中属于root的文件

find / -user root

查询系统中不属于任何人的文件

find / -nouser

  • -name filename:查询文件名为filename的文件。
  • -size +/-SIZE:查找比SIZE大+或比SIZE小-的文件。c代表byte,k代表1024bytes.
  • -type TYPE:查询文件类型为TYPE的文件。一般正规文件f、目录d、装置文件b、c、链接文件l、套接字文件s、
  • -perm mode:查询文件权限等于mode的文件。mode为数字表示的权限。
  • -perm -mode:查询文件权限包括mode的文件。
  • -perm /mode:查询文件权限包含任一mode的文件。
  • -exec command:-exec后面可以接额外的命令来处理搜寻后的结果。

例:

查询系统中文件名为 passwd 的文件

find / -name passwd

查询系统中文件名包含 passwd 的文件

find / -name “*passwd*”

查询系统中文件大小小于20byte的文件

find / -size -20c

查询 /etc 目录下文件大小介于50K到60K之间的文件;-a即 and并且 的意思

find /etc -size +50k -a -size -60k

查询系统中文件类型为b(块设备)的文件

find / -type b

查询系统中权限包含SUID或SGID或SBIT

find / -perm /7000

查询系统中文件名为passwd的文件并通过ls -l 命令显示

find / -name passwd -exec ls -l {} \;

其中 -exec、{}、\、;是关键词,{}内为find / -name passwd 的结果;-exec和\;为动作的开始和动作的结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值