Linux文件和目录管理

clamzxf 2020-05-17

本篇主要讲述:
1 目录和文件
2 目录和文件的操作(复制,删除,移动)
3 查看文件内容的命令
4 搜寻命令(which,whereis,locate,find);
5 文件内容的过滤grep;
 
1、目录和文件
1.1 查看及切换目录
查看当前目录:pwd(print working directory)
切换工作目录:cd(change directory)
.代表当前目录
..代表上级目录
1.2 使用通配符查找
针对不确定的文档名称,以特殊字符表示
(1)*:任意多个任意字符
[ /]# ls  /etc/*tab
[ /]# ls  /etc/*.conf
[ /]# ls  /boot/vm*
(2)?:单个字符
[ /]# ls  /dev/tty?
[ /]# ls  /dev/tty??
[ /]# ls  /dev/tty???
(3)[a-z]:多个字符或连续范围中的一个,若无则忽略
[ /]# ls /dev/tty[3-8]
(4){a,min,xy}:多组不同的字符串,全匹配
[ /]# ls /dev/tty{1,3,5,7,9,S0,30,haha}
[ /]# ls /dev/tty{10,20,30,S1}
[ /]# ls /dev/tty{S2,S3}
请列出  /dev/tty20至/dev/tty30
[ /]# ls /dev/tty{2[0-9],30}
1.3 文件/文件系统的详细信息显示
stat 命令显示包括:inode,atime,ctime,mtime
[ home]# stat passwd
  File: ‘passwd’
  Size: 795             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 19087983    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:home_root_t:s0
Access: 2020-05-10 15:23:17.576572669 -0400
Modify: 2020-05-10 15:23:17.576572669 -0400
Change: 2020-05-10 15:23:17.579572669 -0400
Birth: -
2 目录及文件操作
2.1 创建目录(文件夹)
mkdir(make directory)
[ ~]# mkdir -p /vod/movie/cartoon     #-p表示连父目录一起创建
删除空文件夹:rmdir
2.2 复制cp命令
格式:cp [选项]...  原文件...       目标路径
常用命令选项
-a: 相当于 -dr 
-d: 若来源文件为链接文件的属性,复制链接文件属性而并非文件本身;
-f:为强制(force) 的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i:若目标文件(destination) 已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式链接(hard link) 的链接文件创建,而非复制文件本身;
-p:连同文件的属性(权限、用户、时间)一起复制过去而非使用默认属性(备份常用) ;
-r:递回持续复制,用于目录的复制行为;(常用)
-s:复制成为符号链接文件 (symbolic link) ,亦即“捷径”文件;
-u:update
[ /]# cp /etc/passwd /opt/
[ /]# cp /boot/vm*  /opt/
[ /]# cp -r /boot/ /opt/
[ /]# cp -r /etc/shadow /mnt/  /opt/
[ /]# \cp -r /boot/ /opt/          #覆盖文件时,如果目标位置已经存在该文件,系统会询问我们是否覆盖,需要输入y来确认,加入\存在时就不用询问直接操作
2.3 删除命令
rm — Remove
格式:rm [选项]... 文件或目录...
常用命令选项
-r、-f:递归删除(含目录)、强制删除
-i 删除前询问 
[ /]# touch /opt/1.txt
[ /]# mkdir /opt/abc
[ /]# ls /opt/
1.txt  abc
[ /]# rm  -rf /opt/*
[ /]# ls /opt/
2.4 mv 移动/改名
mv — Move
– 格式: mv  [选项]...  原文件...    目标路径
[ /]# mkdir /opt/nsd01
[ /]# touch /opt/1.txt
[ /]# ls /opt/
1.txt  nsd01
[ /]# mv /opt/1.txt  /opt/nsd01
[ /]# ls /opt/  #移动后/opt下不存在1.txt文件
nsd01
[ /]# ls /opt/nsd01
1.txt

#重命名:路径不变的移动
[ /]# mv /opt/test  /opt/haha  #/test另起文件名/haha
2.5 创建空文件
touch命令
2.6 取得路径的文件与目录名称
basename与dirname
[ etc]# basename /usr/local/nginx/conf/nginx.conf
nginx.conf
[ etc]# dirname /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/conf
3 文件内容的查阅
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
od 以二进制的方式读取文件内容!
4 搜寻命令
which命令: 在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
whereis命令:该指令只能用于查找二进制文件、源代码文件和man手册页
locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。
locate的速度比find快,它并不是真的查找,而是查数据库
4.1 which 查找指令的可执行文件路径
which [-a] 命令
 -a  查找所有PATH路径下的
[ etc]# which ls
alias ls=‘ls --color=auto‘
        /usr/bin/ls
[ etc]# which dirname
/usr/bin/dirname
[ etc]# which find
/usr/bin/find
4.2 whereis 特定目录下寻找文件名
该指令只能用于查找二进制文件、源代码文件和man手册页。
复制/etc/passwd 到/home下
passwd文件在/etc/,/home目录下都存在,但是使用该命令时,结果如下:
[ /]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
参数:
  • -b  只查找二进制文件。
  • -B<目录>  只在设置的目录下查找二进制文件。
  • -f  不显示文件名前的路径名称。
  • -m  只查找说明文件。
  • -M<目录>  只在设置的目录下查找说明文件。
  • -s  只查找原始代码文件。
  • -S<目录>  只在设置的目录下查找原始代码文件。
  • -u  查找不包含指定类型的文件。
4.3 locate
该命令在系统中不存在时
yum -y install mlocate
然后更新数据库:
updatedb
[ /]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/home/passwd
 
4.4 find
常见用法:find   [目录]    [条件1]
(1)常用条件表示:
-type 类型(f 文件、d 目录、l 快捷方式)
-name "文档名称"
-size +|-文件大小(k、M、G)
-user 用户名
[ ~]# find /etc/ -name "*.conf"
[ ~]# find /etc/ -name "passwd"
[ ~]# find /boot  -type d
[ ~]# find /boot  -type l
[ ~]# find /boot  -type f
[ ~]# find  /root/  -name  "nsd*"
[ ~]# find  /root/  -name  "nsd*"   -type f
[ ~]# find  /root/  -name  "nsd*"   -type d
[ ~]# find /boot/ -size +20M  #查找20M以上的文件
[ ~]# ls -lh /boot/initramfs-*
[ ~]# find /boot/ -size -20M
 
[ ~]# useradd lisi
[ ~]# useradd zhangsan
[ ~]# ls -l /home/
[ ~]# find  /home -user zhangsan
[ ~]# find  /home -user lisi
[ ~]# find  /  -user lisi
(2)与时间有关的选项:共有 -atime, -ctime 与 -mtime 
atime:access time访问时间,文件最后被读取过的时间
ctime:change time变更时间,文件最后被变更的时间
mtime:modify time修改时间,文件最后被修改的时间
以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身) 被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身) 被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
 
(3)find结果处理
# rm -rf /opt/*
# find /boot/ -size +10M
# find /boot/ -size +10M  -exec cp {}  /opt \; #找到的结果复制到/opt下
# ls /opt/
# mkdir /root/findfiles
# find / -user lisi -type f  -exec cp {} /root/findfiles   \;
# ls -A /root/findfiles/
5 文件内容的过滤grep
根据字符串模式提取文本行
grep  [选项]   ‘匹配字符串‘    文本文件...
常用命令选项
-v,取反匹配
-i,忽略大小写
[ ~]# grep ‘root‘  /etc/passwd
[ ~]# grep -v ‘root‘  /etc/passwd   #取反
[ ~]# grep ‘ROOT‘  /etc/passwd
[ ~]# grep -i ‘ROOT‘  /etc/passwd   #忽略大小写
[ ~]# grep ‘seismic‘ /usr/share/dict/words
# grep ‘seismic‘ /usr/share/dict/words > /root/wordlist #找出来相匹配的并导出
# cat   /root/wordlist^word  以字符串word开头
word$  以字符串word结尾
[ ~]# grep ‘^root‘ /etc/passwd
[ ~]# grep ‘root$‘ /etc/passwd
[ ~]# grep ‘bash$‘ /etc/passwd
匹配空行
[ ~]# grep -v  ‘^$‘  /etc/default/useradd
 
 

相关推荐