我发现下面这一行这里:
find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \; \;
它的本意是将当前目录中的每个文件夹分别 tar gzip 压缩。但运行它时会返回错误:
find: paths must precede expression:
关于此错误有一些帖子,但它们与此处使用的语法无关。
有谁知道是什么导致了这个错误?
答案1
我测试了一下,错误是由于第二点引起的\;
:
# Works fine
find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \;
# Errors out
find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \; \;
这可能是因为第一个转义符;
结束了选项的命令-exec
,而第二个转义符;
现在成为命令的一部分find
,并被视为路径。这会引发错误,因为-type
表达式已被读取。