2018/05/07 Linux find命令中{}的作用

时间:2022-03-31 14:50:02

首先抛出一个问题,如果你在文件中建立了一个 -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 {} \;

他和上面不一样的是,在删除的时候会询问你是否删除。

--

通过这个小例子,明白了 {} 其实也挺像 | 的管道命令,都是操作上一个结果。