任何“find -exec”大师都在身边。
我有一个需要发送到的文件文件夹sendmail(当发生不好的事情时它们会出现在其中)。
命令
find . -type f -exec sendmail -t < {} \;
Run Code Online (Sandbox Code Playgroud)
给我
-bash: {}: No such file or directory
Run Code Online (Sandbox Code Playgroud)
看来不是很喜欢<。
和这个
find . type -f -exec cat {} |sendmail -t \;
Run Code Online (Sandbox Code Playgroud)
给我
find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)
看来不是很喜欢|。
怎么了?
看来您希望此重定向 ( <) 或管道 ( |) 属于语句内部-exec \xe2\x80\xa6 ;。这不起作用,因为它们find甚至在运行之前就由您的 shell 处理。
为了让它们工作,你需要在里面另一个外壳-exec \xe2\x80\xa6 ;。这个另一个 shell 将处理<or |。分别:
find . -type f -exec sh -c \'sendmail -t < "$1"\' sh {} \\;\nfind . -type f -exec sh -c \'cat "$1" | sendmail -t\' sh {} \\;\nRun Code Online (Sandbox Code Playgroud)\n\n注意:find . -type f -exec sh -c \'sendmail -t < "{}"\' \\;不太复杂但错误。这里解释一下:可以find -exec sh -c安全使用吗?
| 归档时间: |
|
| 查看次数: |
3065 次 |
| 最近记录: |