Linux系统文件管理——常用命令day4
文件管理
一、文件的复制(cp)
1.将当前目录下的file文件,复制到/tmp/目录下,并改名为file_copy
[root@oldboy ~]# cp file /tmp/file_copy
cp: overwrite ‘/tmp/file_copy’? y
[root@oldboy ~]# ls /tmp/file_copy
/tmp/file_copy
2.将file1复制到/tmp目录下
[root@oldboy ~]# cp file1 /tmp/
[root@oldboy ~]# cp file1 /tmp/file1 #此命令不常用
3.在拷贝的文件过程中
(1)如何保持文件原有的属性不发生变化
#未修改前
-rw-r--r--. 1 root root 0 Jul 29 10:07 file
#第一次修改
-rwxrwxrwx. 1 root root 0 Jul 29 10:03 file
#第二次修改
-rwxrwxrwx. 1 adm adm 0 Jul 29 10:03 file
(2)文件权限和身份都发生了变化
[root@oldboy ~]# cp file /tmp/
cp: overwrite ‘/tmp/file’? y
[root@oldboy ~]# ll /tmp/file
-rw-r--r--. 1 root root 0 Jul 29 15:24 /tmp/file
(3)在拷贝过程中加上-p参数,保存文件的原有属性
[root@oldboy ~]# cp -p file /tmp/
cp: overwrite ‘/tmp/file’? y
[root@oldboy ~]# ll /tmp/file
-rw-r--r--. 1 root root 0 Jul 29 10:03 /tmp/file
4.如何拷贝一个目录,且目录中有很多的子文件。(-r表示递归复制)
[root@oldboy ~]# cp /etc/ /tmp/
cp: omitting directory ‘/etc/’
[root@oldboy ~]# cp /etc/ /tmp/ -r
cp: overwrite ‘/tmp/etc/fstab’? y
cp: overwrite ‘/tmp/etc/crypttab’? y
cp: overwrite ‘/tmp/etc/mtab’? y
5.拷贝不同路径下的不同文件至同一个目录下(-v是显示详细过程)
[root@oldboy ~]# cp file1 /etc/hostname /etc/hosts /opt/ -v
‘file1’ -> ‘/opt/file1’
‘/etc/hostname’ -> ‘/opt/hostname’
‘/etc/hosts’ -> ‘/opt/hosts’
[root@oldboy ~]#
6.拷贝不同路径下不同文件+不同目录至同一个位置
[root@oldboy ~]# cp -rp file1 oldboy1/ file /etc/ /mnt/ /opt/
[root@oldboyedu ~]# ls /opt/
etc file file1 mnt oldboy1
7.在复制的过程中频繁出现重复性操作,提示确认操作
[root@oldboy ~]# \cp -r /etc/ /opt/
[root@oldboy ~]# /bin/cp -r /etc/ /opt/
加上\能够取消重复性工作
cp: overwrite ‘/opt/etc/fstab’? y
cp: overwrite ‘/opt/etc/crypttab’? ……
8.扩展
[root@oldboy ~]# cp {file1,file5-bak} -v
‘file1’ -> ‘file5-bak’
‘file1’ -> ‘file5-bak’[root@oldboy ~]# cp /etc/sysconfig/network- scripts/{ifcfg-ens32,ifcfg-ens-32-bak}
注:-r 表示递归复制
-v 显示详
-p 保留源文件或目录的详细过程
二、文件管理——查看文件内容
1.cat查看文件内容
[root@oldboy ~]# cp /etc/passwd ./pass
cp: overwrite ‘./pass’? y
[root@oldboy ~]# cat pass #查看文件的所有内容,从头至尾
[root@oldboy ~]# cat -n pass #查看文件有多少行时用-n
[root@oldboy ~]# cat -A pass #查看文件中存在的特殊字符,比如tab键
2.less和more
(1)less
[root@oldboy ~]# less /etc/services #查看/etc/services下的所有内容, 使用光标上下翻动,空格键进行翻页,q退出
(2) more
[root@oldboy ~]# more /etc/services #查看/etc/services下的所有内容,使用回车乡下移动,空格键进行翻页,q退出
3.head和tail
(1)head
[root@oldboy ~]# head pass #查看文件头部内容,默认为前10行
[root@oldboy ~]# head -n pass #查看文件的前n行内容。-n为指定查看那几行的内容。
(2)tail
[root@oldboy ~]# tail pass #查看文件尾部的内容,默认10行
[root@oldboy ~]#tail -f /var/log/messages #查看尾部的变化
4.grep(过滤|匹配文件的内容)
(1)过滤出pass文件中的root相关的行
[root@oldboy ~]# grep "root" pass
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
(2)过滤pass文件中,匹配以root开头的行
[root@oldboy ~]# grep "^root" pass
root:x:0:0:root:/root:/bin/bash
(3)过滤pass文件中,匹配以bash结尾的行
[root@oldboy ~]# grep "bash$" pass
root:x:0:0:root:/root:/bin/bash
(4)显示行号
[root@oldboy ~]# grep -n "bash$" pass
1:root:x:0:0:root:/root:/bin/bash
(5)扩展
匹配文件中/var/log/secure 文件中Failed字符串,并打印下2行
[root@oldboy ~]#grep -n -A 2 "Failed" /var/log/secure
匹配文件中/var/log/secure文件中Falied字符串,并打印上2行
[root@oldboy ~]#grep -n -B 2 "Failed" /var/log/secure
匹配文件中/var/log/secure文件中Failed字符串,并打印上下各2行
[root@oldboy ~]#grep -n -C 2 "Failed" /var/log/secure
(6)过滤出文件包含ftp的行
[root@oldboy ~]# grep "ftp" pass
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
(7)过滤除了ftp的行,其他的全部显示
输入grep -v "ftp" pass即显示除ftp以外的所有内容(8)忽略大小写的方式
[root@oldboy ~]# grep -i "ftp" pass
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
(9)过滤pass文件中以sync结尾中,或者ftp相关的行,打印出来,同时不区分大小写
[root@oldboy ~]# grep -Ei "sync$|ftp" pass
sync:x:5:0:sync:/sbin:/bin/sync
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin