说明

2016-10-02 123 views
-1

我想知道这个命令的每串背后的含义:说明

find . -type f -exec chmod 644 {} \; 
  • find . -type f意味着找到这个文件夹中的所有文件
  • -exec chmod 644执行chmod 644命令所有这些文件

为什么我们需要{}\;?他们有什么用途?

+1

您是否至少有[请阅读文档?](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html) –

回答

2
  • . ...开始搜索在当前目录
  • -type f ......找到类型为 “文件”(相对于 “目录”, “链接” 等)
  • -exec ... \;的文件.. 。每个文件发现,运行命令...
  • chmod ...为exec命令将chmod(对于文件更改访问权限)
  • 644 ......访问权限会更改为(读取,写入)文件的所有者和(读取)给其他人。
  • {} ......这部分将用实际文件名由find

为什么我们需要{}和\更换; ?他们的意思是什么?

{}将替换为find找到的文件名。

\;终止-exec动作find。我们需要它,因为-exec中的命令可以与您想要的一样长,然后在-exec之后,您可能需要其他查找操作或谓词。所以你需要一些方法来确定一个-exec部分结束并且其他一些查找动作如下。在实践中,这是由两个终结符中的一个决定的,它们的含义有所不同(请阅读查找的手册页),这两个终结符分别为;+。但是因为;是shell中的一个元字符,所以我们需要通过转义(或放入引号)来保护它免受shell攻击。

+0

感谢您提供详细和翔实的解释! –