【问题标题】:SED - "Filename too long" - is there a way to skip this error?SED - “文件名太长” - 有没有办法跳过这个错误?
【发布时间】:2012-03-13 09:02:32
【问题描述】:

我正在运行这个命令:

cd /tmp;find / -maxdepth 2 -type f | xargs -0 sed -i 's/teststring1/finally/g'

它会一直处理,直到它报告错误:文件名太长。查找文档,似乎是文件名超过 1024 字节。无论如何,我认为使用 print 0 会抑制这一点,但没有。是否有任何命令可以跳过错误而不仅仅是停止?

【问题讨论】:

  • 您可以通过管道传输到 while read line 而不是 xargs?这样它将跳过失败的行并继续其他行。
  • 我的语法不正确,你能告诉我在我朋友的上下文中的命令吗?
  • 您是否手动重新键入了此命令? cd /tmp; find / 有点好笑,尽管xargs(1) 命令行中有-0,但命令中没有-print0。请不要重新键入命令或代码,这会无缘无故地使调试变得更加困难。请复制并粘贴。 :)
  • 我无法重现这个;在我的ext3/tmp 目录上,文件和目录名称不能超过 256 个字符,当我将文件放置在七个目录以下时,它仍然没有给出 filename too long 错误消息.

标签: linux sed


【解决方案1】:
cd /tmp;
find / -maxdepth 2 -type f -exec sed -i 's/teststring1/finally/g' {} \;

{} 将更改为每个文件名,甚至适用于名称中包含空格的文件。

【讨论】:

  • 更好,-exec sed ... {} +
猜你喜欢
  • 2019-10-15
  • 2013-06-14
  • 2020-12-13
  • 2019-10-24
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多