我想compiz
用我的来解决一些问题脑和手。
顺便说一下,我compiz
在 Ubuntu 12.04 中输入以下命令从源代码进行构建
find /opt/compiz-built/share/gconf/schemas -exec gconftool-2 --install-schema-file={};
我引用了该命令http://www.brazzi64.net/blog/building-compiz-from-source-in-ubuntu-12-04/
并显示以下消息。
如何-exec
在查找命令中使用选项,我猜这是我的错误。
答案1
您快完成了。您需要\;
在末尾添加一个,以便 find 知道命令的结尾在哪里。
find /opt/compiz-built/share/gconf/schemas -exec gconftool-2 --install-schema-file={} \;
对于可以一次接受多个参数的命令(例如,如果您只想接受stat
每个文件名),您可以改用\+
。这将构建一个复合参数,它可以执行得更快,因为它不会为每个文件分叉:
find . -exec stat {} \+
但对于您的示例来说,这在这里不起作用。
仅通过测试工具来强调不需要引号:
$ mkdir 1 2 1\ 2 # makes three directories
$ touch {1,2}/single # puts a file in each of the two singles
$ touch 1\ 2/COMBO # puts a file in the dir with a space
$ find -type d -exec ls {} \;
1 1 2 2
single
single
COMBO
如果它不为我们处理引用,我们就会看到这个而不是 COMBO:
1:
correct
2:
correct
答案2
你可以使用这个命令。
find /opt/compiz-built/share/gconf/schemas -exec gconftool-2 --install-schema-file '{}' ';'
根据 find 命令手册($man find)。find 命令中可以预定义一些操作,例如 delete、ls。
除了预定义操作之外,我们还可以调用任意命令。传统的方法是使用-执行动作。此动作的工作方式如下:
-exec command {} ;
其中 command 是命令的名称,{} 是当前路径名的符号表示,分号是表示命令结束的必需分隔符。
再次,由于括号和分号字符对 shell 有特殊含义,因此必须用引号或转义。