首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让xargs在Cygwin工作

让xargs在Cygwin工作
EN

Stack Overflow用户
提问于 2014-08-29 06:47:03
回答 2查看 2.3K关注 0票数 3

Linux/bash,获取输入的行列表,并使用xargs处理每一行:

代码语言:javascript
复制
% ls -1 --color=never | xargs -I{} echo {}
a
b
c

Cygwin,走1:

代码语言:javascript
复制
$ ls -1 --color=never | xargs -I{} echo {}
    xargs: invalid option -- I
    Usage: xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]]
           [-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]]
           [--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive]
           [--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs]
           [--max-args=max-args] [--no-run-if-empty] [--version] [--help]
           [command [initial-arguments]]

Cygwin,2:

代码语言:javascript
复制
$ ls -1 --color=never | xargs echo
a b c

(是的,我知道有一种通用的ls -1 --color=never | while read X; do echo ${X}; done方法,我已经测试过它在Cygwin中也能工作,但我正在寻找一种方法使xargs在Cygwin中正确工作)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-29 12:13:25

使用-n参数xargs,这实际上是您应该使用的参数,因为-I是一个选项,用于为参数赋予“名称”,以便使它们出现在命令行的任何位置:

代码语言:javascript
复制
$ ls -1 --color=never | xargs echo
a b c
$ ls -1 --color=never | xargs  -n 1 echo
a
b
c

在这篇文章中:

代码语言:javascript
复制
   -n max-args
          Use at most max-args arguments per command line

   -I replace-str
          Replace occurrences of replace-str in the initial-arguments with names read from standard input.
票数 1
EN

Stack Overflow用户

发布于 2014-08-29 13:38:01

damienfrancois's答案是正确的。您可能希望使用-n强制echo一次回显一个文件名。

但是,如果您真的对每个文件一次只执行一个文件感兴趣,那么最好使用find

代码语言:javascript
复制
$ find . -maxdepth 1 --exec echo {} \;

有几件事:

  • 这将获取以句点(包括'.')开头的文件名。
  • 这将在文件名前面放置一个./
  • 正在使用的echo来自/bin/echo,而不是回显的内置shell版本。

但是,它不依赖于执行ls *的shell和可能导致问题的可能性(例如对文件名进行着色,或者在子目录中打印出文件)(您的命令将这样做)。

xargs的目的是最小化特定命令的执行:

代码语言:javascript
复制
$ find . -type f | xargs foo

在这种情况下,xargs只执行foo最少次数。只有在命令行缓冲区已满或没有其他文件名时,foo才会执行。但是,如果在每个名称之后强制执行,则最好使用find。它要灵活得多,而且不依赖于shell行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25562978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档