避免误删除数据
1.尽量把文件移动到 /tmp目录
2.参数最小化 -f -rf
3.-f或-fr放在命令最后
#########################################################################################################################
find 命令 <find(选项)(参数)>
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,
则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:s假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或——help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-typ<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
###############################################################################################
find /root/ -type f -name "oldboy.txt"
不知道文件在哪,可以从/目录下开始找
################################################################################################
[root@oldboyedu-wj data]# find /root/ -type f -name "*.txt"
/root/data/lidao.txt
/root/data/alex.txt
/root/data/oldboy.txt
"*.txt" 以txt结尾的文件
#########################################################################################################################
管道的概念 |
把前面的命令传递给后面的命令 *所有 任意的字符
[root@oldboyedu-wj data]# find /root/ -type f -name "*.txt" |xargs ls -l
-rw-r--r--. 1 root root 0 Mar 22 12:56 /root/data/alex.txt
-rw-r--r--. 1 root root 0 Mar 22 12:56 /root/data/lidao.txt
-rw-r--r--. 1 root root 0 Mar 22 12:56 /root/data/oldboy.txt
################################################
小结:
1.防止误删除 find精确查找文件
-type 类型
f<file>文件
d<directory 目录>
-name 文件名
2.
特殊符号:*
2. | 管道 把前一个命令的结果传递到下一个命令
find 与 |xargs 配合
######################################################################
1.运维人员如何最大限度避免误删除文件
http://oldboy.blog.51cto.com/2561410/1687300
2.企业面试题:linux面试题:删除一个目录下的所有文件,但保留一个指定文件
http://oldboy.blog.51cto.com/2561410/1650380
.. 当前目录的上一级目录
. 当前目录 <复制 移动>
##################################################################
已知文件test.txt内容
test
liyao
oldboy
请输出test.txt文件内容,不包括oldboy字符
[root@oldboyedu-wj /]# mkdir -p /data
[root@oldboyedu-wj /]# cat >/data/test.txt<<EOF
> test
> liyao
> oldboy
> EOF
方法一:
[root@oldboyedu-wj data]# grep "oldboy" test.txt
oldboy
[root@oldboyedu-wj data]# grep -v "oldboy" test.txt
test
liyao
方法二:
head 显示文件的前几行 默认显示前10行
[root@oldboyedu-wj data]# head -n2 test.txt
test
liyao
#######拓展
tail -l test.txt 显示文件最后几行 默认显示最后10行
[root@oldboyedu-wj data]# tail -n1 test.txt
oldboy
方法三:
awk ‘!/oldboy/‘ test.txt
[root@oldboyedu-wj data]# awk ‘/oldboy/‘ test.txt
oldboy
[root@oldboyedu-wj data]# awk ‘!/oldboy/‘ test.txt
test
liyao
方法四:
sed ‘/oldboy/d‘ test.txt
小结:
1.在文件中过滤的方法 head / tail
2.过滤 grep
##################################################################
请用一条命令创建/oldboy /test/目录
mkdir - p //oldboy/test/
##
##########################################################
cp === cp -i
rm === rm -i
别名 alias
命令的小名 爱称 昵称
作用:
1.给危险的命令 加上一个保险
2.简化输入
查看系统已有别名
[root@oldboyedu-wj data]# alias
alias cp=‘cp -i‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
设置一个别名执行rm 的时候显示 rm command bny
cp命令之忽略提示
1.\cp /mnt/test.txt /tmp/
寻找命令位置
which 命令
[root@for-fun /]# which cp
alias cp=‘cp -i‘
/bin /root/data/oldboy.txt /tmp/oldboy.txt
设置一个别名执行rm的时候 显示 rm command bny
1.临时配置(断电重启失效)
alias rm=‘echo rm command no affect‘
[root@for-fun /]# rm -rf /tmp/oldboy.txt
rm command no affect -rf /tmp/oldboy.txt
2.永久配置 修改配置文件
vi /etc/profile
命令生效 source /etc/profile
3.修改/root/.bashrc文件
注释掉# alias rm=‘rm -i‘
小结:配置别名然后生效
##########################################################
取出文件ett.txt中间的字符
方法一:
seq 生成数字序列
[root@oldboyedu-wj ~]# seq 40 >ett.txt
[root@oldboyedu-wj ~]# cat ett.txt
[root@oldboyedu-wj ~]# head -30 ett.txt |tail ett.txt
方法二:
sed ‘2p‘ ett.txt
取消默认输出
-n
sed -n ‘2p‘ ett.txt
sed -n ‘20,30p‘ ett.txt
方法三:
awk ‘NR==20‘ ett.txt
awk ‘NR==20,NR==30‘ ett.txt
方法四:grep
grep -A10 "20" ett.txt
-A 显示你要找的内容-A 行后的内容
##########################################################
把oldboy目录下所有.sh的文件中的oldboy替换成oldgirl
[root@oldboyedu-wj oldboy]# find /oldboy -type f -name "*.sh"
/oldboy/t.sh
/oldboy/test.sh
/oldboy/test/del.sh
[root@oldboyedu-wj oldboy]# cat t.sh
oldboy
[root@oldboyedu-wj oldboy]# sed ‘s#oldboy#oldgirl#g‘ t.sh
oldgirl
sed ‘s#找谁#替换为什么#g‘ t.sh
[root@oldboyedu-wj oldboy]# sed -i ‘s#oldboy#oldgirl#g‘ t.sh
[root@oldboyedu-wj oldboy]# cat t.sh
oldgirl
find /oldboy -type f -name "*.sh"|xargs sed ‘s#oldboy#oldgirl#g‘ t.sh
oldgirl
第1个里程碑-找出目标
[root@oldboyedu-sh01 oldboy]# find /oldboy -type f -name "*.sh"
/oldboy/test/del.sh
/oldboy/t.sh
/oldboy/test.sh
第2个里程碑-如何替换一个文件 oldboy ----> oldgirl
[root@oldboyedu-sh01 oldboy]# cat t.sh
oldboy
[root@oldboyedu-sh01 oldboy]# sed ‘s#oldboy#oldgirl#g‘ t.sh
oldgirl
#sed ‘s#找谁#替换为什么#g‘ t.sh
[root@oldboyedu-sh01 oldboy]# cat t.sh
oldboy
[root@oldboyedu-sh01 oldboy]# sed -i ‘s#oldboy#oldgirl#g‘ t.sh
[root@oldboyedu-sh01 oldboy]# cat t.sh
oldgirl
第3个里程碑-把find命令找出的文件交给sed替换 并检查
[root@oldboyedu-sh01 oldboy]# find /oldboy -type f -name "*.sh"
/oldboy/test/del.sh
/oldboy/t.sh
/oldboy/test.sh
[root@oldboyedu-sh01 oldboy]# find /oldboy -type f -name "*.sh"|xargs sed ‘s#oldboy#oldgirl#g‘
oldgirl
oldgirl
oldgirl
[root@oldboyedu-sh01 oldboy]# find /oldboy -type f -name "*.sh"|xargs sed -i ‘s#oldboy#oldgirl#g‘
[root@oldboyedu-sh01 oldboy]# find /oldboy -type f -name "*.sh"|xargs cat ##检查
oldgirl
oldgirl
oldgirl
##########################################################
G 到文件的最后一行
gg 到文件第一行
o (小写字幕o)在光标所在行的下一行 插入一个空行并进入编辑模式
u 撤销上一次的操作
说说你在vi/vim中常用的命令或快捷键
http://blog.51cto.com/lidao/1925897
###################################################################
grep 命令
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。