Answers:
我通常会发现,使用该-exec选项find会更容易且不会造成混乱。尝试这个:
find . -name vmware-*.log -exec rm -i {} \;
之后,一切都-exec被认为是为每个结果运行命令,直到;,这是这里这么逃脱,它会被传递给find。将{}用find通常会打印的文件名替换。
验证完成后,您可以删除-i。
如果您拥有GNU find,则可以使用以下-delete选项:
find . -name "vmware-*.log" -delete
要使用xargs并避免文件名中的空格问题:
find . -name vmware-*.log -print0 | xargs -0 rm
但是,您的日志文件的名称中不应包含空格。文字处理文档和MP3文件可能包含它们,但是您应该能够控制日志文件的名称。
您可以告诉您find用NULL分隔输出列表,并xargs以相同的方式接收其输入列表:
$ ls -l "file 1" "file 2"
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 2
$ find . -name 'file *' -print0 | xargs -0 ls -l
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 2
$ find . -name 'file *' -print0 | xargs -0 rm -v
removed `./file 2'
removed `./file 1'
另外,请确保*使用反斜杠或通过vmware-*.log在单引号中包含来转义,否则您的外壳可能会在将其传递给之前尝试对其进行扩展find。