我读《Linux圣经第10版》第 130 页。练习#7:
创建一个/tmp/文件目录。查找该目录下的所有文件/usr/共享 将大于5MB小于10MB的目录复制到/tmp/文件目录。
我的命令看起来像find /usr/share -type f -size +5M -size -10M -exec cp {} /tmp/FILES \;
.我像普通用户一样运行它并得到
cp: error copying '/bla/bla' to '/lol/kek': Input/output error find: '/usr/share/bla-bla': Permission denied
之后我尝试以超级用户身份运行它并收到错误(没有Permission denied
):
cp: error copying '/bla/bla' to '/lol/kek': Input/output error
请解释一下,即使我以超级用户身份运行它,错误的原因是什么。谢谢。
PS 请解释为什么带有 of 的命令-exec
应该为空{}
?
答案1
EIO
“输入/输出错误”表示读取源文件或写入目标文件时发生低级 I/O 错误 ( )。这意味着您的存储有问题;dmesg
将为您提供更多信息。
此类错误与特权或权限无关,这就是为什么cp
以 root 身份运行不会使它们消失(与“权限被拒绝”错误不同)。
了解“find”的 -exec 选项{}
解释了with的用法-exec
。