我有一个包含10144911文件的目录。到目前为止,我已经尝试了以下方法: for f in ls; do sed -i -e 's/blah/blee/g' $f; done 摔坏了我的贝壳,ls它在一个tilda中,但是我不知道该怎么做。 ls | xargs -0 sed -i -e 's/blah/blee/g' 的args太多 sed find . -name "*.txt" -exec sed -i -e 's/blah/blee/g' {} \; 无法再分叉没有更多的内存 关于如何创建这种命令还有其他想法吗?这些文件不需要相互通信。ls | wc -l似乎可以正常运行(非常慢),因此必须可行。
据我了解,以下含义应完全相同: ls -1 | xargs file {} ls -1 | xargs -I{} file {} 如果未指定-I选项,则默认为-I {}。 我想列出当前目录中的所有文件,并对每个文件运行file命令。有些名称中有空格。但是,我注意到了差异。见下文: $ ls -1 Hello World $ ls -1 | xargs file {} {}: ERROR: cannot open `{}' (No such file or directory) Hello: ERROR: cannot open `Hello' (No such file or directory) World: …
我正在尝试使用xargs为每个提供的参数运行命令,但是不幸的是,当与-n共轭时,--replace / -I标志似乎无法正常工作。不论-n选项如何,{}似乎都会扩展到从stdin读取的参数的完整列表。 不幸的是,网络上的所有示例似乎都是针对命令(mv,cp,rm)的,这些命令将在展开{}的位置接受多个参数。 例如,运行时: echo a b c d | xargs -n 1 -I {} echo derp {} 输出为: derp a b c d 但我期望: derp a derp b derp c derp d 但是,在没有-I {}的情况下运行它会产生预期的结果: echo a b c d | xargs -n 1 echo derp derp a derp …