Kam*_*Joe 0 bash shell-script find
\;
以下命令中的含义是什么?我也不确定是什么{}
意思。是否\;
真的有必要?
find ./ -name file_1 -exec cp {} ./ \;
Run Code Online (Sandbox Code Playgroud)
在您的示例中\;
是 find 命令的一部分。(见man 1 find)。对于 也是如此{}
。
这个精确的命令指出:
./
)file_1
cp {} ./
结果是所有名为 file_1 的文件和目录都将复制到您的当前目录。(如果有多个文件或目录同一个名称,它们可能会被覆盖)
一般解释就这么多。现在是细节选择:
这将对于查找发现每一项运行的命令是:
cp full_path_to_item ./
这是之间的内容-exec
和;
然而,分号在 bash 中是一个特殊字符。如果我们不对它做任何特别的处理,那么贝壳就会吃掉它。所以我们用反斜杠转义它。这告诉外壳不要管它并传递它以查找。
请注意,您需要对所有特殊字符执行此操作。例如,您不能简单地在文件名中使用星号(所以没有 find . -type f -name *.mp3 ....)