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
。