Shell表示法:find . -type f -exec file '{}' \;
问题的原因是在find命令中,-exec后面跟着一个命令和该命令的参数。因为参数的数量是任意的,所以find需要一种方法来知道何时结束。分号就是告诉find它已经到达命令参数的结尾。
大多数情况下,shell会忽略分号。但是我们希望分号被传递给find命令。因此,我们使用反斜杠来转义它。这告诉shell将分号视为find命令的参数之一。
更进一步解释一下,为什么不假设exec命令的参数直接到行末呢?为什么我们需要标志exec命令参数的结束呢?原因是find有高级功能。举个例子,考虑以下命令:
find . -name '*.pdf' -exec echo Yes, we have a pdf: {} \; -o -exec echo No, not a pdf: {} \;
为什么find需要知道何时结束呢?-exec命令的参数是一个有限的列表,所以它不应该知道何时结束吗?
解决方法是使用反斜杠来转义分号,以确保分号被传递给find命令。这样find就知道何时结束命令的参数了。