2018/05/07 Linux find命令中{}的作用
首先抛出一个问题,如果你在文件中建立了一个 -a.txt 的文件,你会怎么删除它?
我之前的回答是
rm -a.txt
实验结果很明显,不能删除。
因为在 Linux 下,会把 -a.txt 前面的 - 认为是 rm 的一个选项,然而 rm 命令并没有这个选项,所以会报错,并且不能删除。
所以对于前面有特殊字符 - 的文件
rm ./-1.txt
就可以删除了。
--
前面可能说了一堆废话,并没说 {} 有什么用。
上面我们说了如何删除特殊字符 - 的文件,可是在实际过程中,会不小心建立各种各样的文件。
各种特殊符号,实际上,我们并不能使用一种通用的方法来说每种特殊符号改怎么删除。
这里就会引入对 find 命令的使用
--
关于 find 的命令的一般问题这里也不做赘述。
我们知道,每个文件都有一个类似于 ID 的东西。
我们可以用
ls -ai
来查看我们文件的ID 这里我随便列出一个特殊文件的ID
9380 -111
--
之后我们就可以使用 find 来找到这个文件
find . -inum 9380
在找到这个或多个文件之后,我们就可以操作它。
{} 的作用更像是一个之前命令产生的一个集合一样,我们队这个集合进行操作。
find . -inum 9380 -exec rm {} \;
这样子我们就会执行 -exec 下面的命令,去删除上面已经找到的集合。
--
这里只是对于 {} 的一个示例,其他的用法还有很多。
还有一个参数是 -ok
如果是这样的:
find . -inum 9380 -ok rm {} \;
他和上面不一样的是,在删除的时候会询问你是否删除。
--
通过这个小例子,明白了 {} 其实也挺像 | 的管道命令,都是操作上一个结果。