linux shell 脚本攻略第3版 读书笔记


第2章

1shell会扩展没有引号或是出现在双引号(")中
的通配符。单引号能够阻止shell扩展*.txt,使得该字符串能够原封不动地传给find命令。

2find 命令 如果需要用到正则表达式使用单引号''
例如:查找/home/slynux下面 所有以txt结尾的文件并打印出来
find /home/slynux -name '*.txt' -print

find命令有一个选项-iname(忽略字母大小写)

3–newer选项可以指定一个用于比较修改时间的参考文件,然后找出比参考文件更新的(更
近的修改时间)所有文件。

例如,找出比file.txt修改时间更近的所有文件:
$ find . -type f -newer file.txt -print
find命令的时间戳处理选项有助于编写系统备份和维护脚本。

你必须以root用户的身份执行find命令才能够更改文件或目录的所有权。


4下列命令可以将10天前的 .txt文件复制到OLD目录中:
$ find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;

5我们无法在-exec选项中直接使用多个命令。该选项只能够接受单个命令,
不过我们可以耍一个小花招。把多个命令写到一个shell 脚本中( 例如
command.sh),然后在-exec中使用这个脚本:
-exec ./commands.sh {} \;

6使用find命令的-print0选项生成以空字符('\0')作为分隔符的输出,然后将其作为
xargs命令的输入。
下列命令会查找并删除所有的.txt文件:
$ find . -type f -name "*.txt" -print0 | xargs -0 rm -f

删除以html结尾的10天前的文件,包括带空格的文件:

find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 rm -rfv

find /usr/local/backups -mtime +10 -name "*.html" -exec rm -rf {} \;


find -print 和 -print0的区别:

-print 在每一个输出后会添加一个回车换行符,而-print0则不会。
 

猜你喜欢

转载自blog.csdn.net/a1779078902/article/details/83780307
今日推荐