如何解决如何发送cp文件名列表带空格
|| Egrep正在根据其内容为我生成文件列表,但是尝试将列表作为参数传递给cp时我做错了。 (我的外壳是bash)。我以为我会转义文件名中的空格并将换行符转换为空格,但是cp似乎忽略了管道输入中的转义空格。 文件名示例:2011-05-15\\ 14.43.41.txt
$ cp `egrep -l \"OS\\ version: 10.6\" * | sed -e \'s/ /\\ /g\' | tr \'\\n\' \' \'` ~/crashreportstemp/
cp: cannot stat `2011-05-15\': No such file or directory
当我执行反引号的内容时,我得到的输出可以直接粘贴到cp中。
我也尝试过使用xargs:
$ egrep -l \"OS\\ version: 10.6\" * | sed -e \'s/ /\\ /g\' | tr \'\\n\' \' \' | xargs cp ~/crashreportstemp
但这导致cp将最后传递的文件名视为最终的cp参数,而忽略了我对cp的显式参数:
cp: target `2011-05-30 16.23.30.txt\' is not a directory
我显然忽略了正确的方法,请帮忙!
谢谢-杰森
解决方法
尝试这样的事情:
egrep -l \"OS\\ version: 10.6\" * | sed -e \'s/ /\\ /g\' | tr \'\\n\' \' \' && echo ~/crashreportstemp | xargs cp
在您的版本中,〜/ crashreportstemp作为第一个参数传递给cp,而不是最后一个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。