如何向 cp 发送文件名列表(带空格)

发布于 2024-11-10 09:59:22 字数 729 浏览 4 评论 0原文

Egrep 正在根据文件内容为我生成文件列表,但我在尝试将该列表作为参数传递给 cp 时做错了一些事情。 (我的外壳是 bash)。我以为我会转义文件名中的空格并将换行符转换为空格,但 cp 似乎忽略了管道输入中转义的空格。

文件名示例:2011-05-15\ 14.43.41.txt

$ cp `egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | sed -e 's/ /\ /g' | tr '\n' ' '` ~/crashreportstemp/

cp: 无法统计 `2011-05-15': 没有这样的文件或目录

当我执行反引号的内容时,我得到的输出可以直接粘贴到 cp 中。

我也尝试过使用 xargs:

$ egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | sed -e 's/ /\ /g' | tr '\n' ' ' | xargs cp ~/crashreportstemp

但这会导致 cp 将最后传递的文件名视为最终的 cp 参数,忽略我对 cp 的显式参数:

cp: target `2011-05-30 16.23.30.txt ' 不是目录

我显然忽略了执行此操作的正确方法,请帮忙!

谢谢 - 杰森

Egrep is generating for me a list of files based on their contents, but I'm doing something wrong trying to pass that list to cp as arguments. (My shell is bash). I thought I'd escape the spaces in the filenames and convert the newlines to spaces, but cp appears to ignore the escaped spaces in the piped input.

Example filename: 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

When I execute the contents of the backticks, I'm getting output that I could paste right into cp.

I've tried using xargs too:

$ egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' | xargs cp ~/crashreportstemp

But that causes cp to treat the last passed file name as the final cp argument, ignoring my explicit argument to cp:

cp: target `2011-05-30 16.23.30.txt' is not a directory

I'm obviously overlooking the right way to do this, please help!

Thanks - Jason

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嗳卜坏 2024-11-17 09:59:22

尝试这样的操作:

egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' && echo ~/crashreportstemp | xargs cp

在您的版本中, ~/crashreportstemp 作为第一个参数传递给 cp,而不是最后一个。

Try something like this:

egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' && echo ~/crashreportstemp | xargs cp

In your version, ~/crashreportstemp is getting passed as the first argument to cp, not the last.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文