标签: xargs

是否可以将FIND的结果传递给COPY命令CP?

是否可以将结果find传递给COPY命令cp

像这样:

find . -iname "*.SomeExt" | cp Destination Directory
Run Code Online (Sandbox Code Playgroud)

寻求,我总是找到这样的公式,如从这篇文章:

find . -name "*.pdf" -type f -exec cp {} ./pdfsfolder \;
Run Code Online (Sandbox Code Playgroud)

这提出了一些问题:

  1. 为什么你不能使用|烟斗?这不是它的用途吗?
  2. 为什么每个人都推荐 -exec
  3. 我怎么知道何时使用(exec)管道|

linux shell terminal find xargs

19
推荐指数
4
解决办法
2万
查看次数

为什么"locate filename | xargs vim"导致奇怪的终端行为?

当我"找到50local.policy | xargs vim"时,我收到错误"Vim:Warnung:Die Eingabe kommt nicht von einem Terminal"(翻译:Vim:警告:输入不是来自终端).

我可以用vim成功编辑但是在我关闭之后我的终端表现得很奇怪(我不能输入字母,当我点击进入shell提示只是重复.当我用"xargs gedit"做它时它不会产生那些问题.

我使用Ubuntu 11.10与Gnome 3和Gnome-Terminal 3.0.1.

vim terminal xargs

18
推荐指数
2
解决办法
2658
查看次数

xargs的最终参数

我想做类似的事情:

find . -type f | xargs cp dest_dir
Run Code Online (Sandbox Code Playgroud)

但是xargsdest_dir用作初始论证,而不是最终论证.我想知道:

  1. 是否可以指定最终参数xargs
  2. 任何其他替代方案可以达到相同的效果?

编辑

一个可能的,但繁琐的替代方案是:

find . -type f | while read f ; do echo cp $f dest_dir ; done
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个,因为cp会启动几十个进程.

xargs

17
推荐指数
1
解决办法
3809
查看次数

如何在linux中的命令中间使用xargs传递所有参数

我想在Linux上将所有文件作为单个参数传递,但我无法做到这一点.

这很有效

ls | sort -n | xargs  -i pdftk  {} cat output combinewd2.pdf
Run Code Online (Sandbox Code Playgroud)

这会为每个命令传递一个参数,但我希望所有命令都在一个命令中.

linux xargs

16
推荐指数
7
解决办法
2万
查看次数

xargs拆分换行符而不是空格

这是我的问题

$ echo 'for i in $@; do echo arg: $i; done; echo DONE' > /tmp/test.sh
$ echo "ac\nbc\ncc\n" | xargs bash /tmp/test.sh 
arg: ac
arg: bc
arg: cc
DONE
Run Code Online (Sandbox Code Playgroud)

这是我所期待的,但是

$ echo "ac s\nbc s\ncc s\n" | xargs -d \n bash /tmp/test.sh
arg: ac
arg: s
arg: bc
arg: s
arg: cc
arg: s
DONE
Run Code Online (Sandbox Code Playgroud)

输出不应该是?

arg: ac s
arg: bc s
arg: cc s
DONE
Run Code Online (Sandbox Code Playgroud)

如何使用xargs获得第二个输出?

unix shell xargs

16
推荐指数
3
解决办法
2万
查看次数

xargs执行一个字符串 - 我做错了什么?

我正在尝试重命名当前目录中的所有文件,以便大写名称转换为更低.我试着这样做:

ls -1|gawk '{print "`mv "$0" "tolower($0)"`"}'|xargs -i -t eval {}
Run Code Online (Sandbox Code Playgroud)

我在目录中有两个文件,Y和YY -t添加用于调试,输出为:

eval `mv Y y`
xargs: eval: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我自己执行eval,它会工作并将Y移动到y.

我知道还有其他方法可以实现这一目标,但如果可以的话,我想让它工作!干杯

shell eval xargs

15
推荐指数
1
解决办法
6819
查看次数

来自stdin的wget或curl

我想在从stdin提供URL时下载网页.基本上一个进程连续生成stdout/file的URL,我想将它们管道输出到wget或curl.(如果您愿意,可以将其视为简单的网络爬虫).

这似乎工作正常:

tail 1.log | wget -i - -O - -q 
Run Code Online (Sandbox Code Playgroud)

但是当我使用'tail -f'并且它不再起作用时(缓冲或wget正在等待EOF?):

tail -f 1.log | wget -i - -O - -q
Run Code Online (Sandbox Code Playgroud)

任何人都可以使用wget,curl或任何其他标准Unix工具提供解决方案吗?理想情况下,我不想在循环中重新启动wget,只是让它继续运行下载URL.

unix curl stdin wget xargs

15
推荐指数
2
解决办法
8818
查看次数

在Mac OS X中忽略xargs的空结果

我的网站代码使用这段代码在服务器(Ubuntu)上自动部署.

cmd = 'cd ' + checkout_dir + ' && ' + svn_command + " st | awk '{print $2}' | grep -v ^deploy | tac | xargs -r" + svn_command + " revert -R && " + svn_command + ' up -r ' + options.revision

这个命令做的是cd进入checkout目录,运行svn status,然后提取filename($2),deploy从列表中删除目录及其所有文件(我不想还原它).如果没有参数,它不会运行svn revert命令,否则它会运行.

不幸的是,xargs -r它在我的机器上不起作用(Mac OS X 10.8).所以我被困在这里,任何人都可以帮忙吗?

svn macos shell awk xargs

14
推荐指数
1
解决办法
4375
查看次数

将sed行分隔符更改为NUL以充当"xargs -0"预过滤器?

我正在运行这样的命令行:

filename_listing_command | xargs -0 action_command
Run Code Online (Sandbox Code Playgroud)

在哪里filename_listing_command使用空字节来分隔文件 - 这就是xargs -0想要消费的东西.

问题是我想过滤掉一些文件.像这样的东西:

filename_listing_command | sed -e '/\.py/!d' | xargs ac
Run Code Online (Sandbox Code Playgroud)

但我需要用xargs -0.

如何将sed想要的行分隔符从换行符更改为NUL?

sed xargs

13
推荐指数
2
解决办法
4023
查看次数

将现有数组中的所有元素传递给xargs

我试图传递一个文件路径数组,xargs将它们全部移动到一个新的位置.我的脚本目前的工作方式如下:

FILES=( /path/to/files/*identifier* )
if [ -f ${FILES[0]} ]
  then
    mv ${FILES[@]} /path/to/destination
fi
Run Code Online (Sandbox Code Playgroud)

将FILES作为数组的原因是因为if [ -f /path/to/files/*identifier* ]如果通配符搜索返回多个文件,则失败.仅检查第一个文件,因为如果存在任何文件,将执行移动.

我想,以取代mv ${FILES[@]} /path/to/destination与传递线路${FILES[@]}xargs移动的每个文件.我需要使用,xargs因为我希望有足够的文件来重载单个mv.通过研究,我只能找到移动文件的方法,我已经知道哪些文件再次搜索文件.

#Method 1
ls /path/to/files/*identifier* | xargs -i mv '{}' /path/to/destination

#Method 2
find /path/to/files/*identifier* | xargs -i mv '{}' /path/to/destination
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将现有数组中的所有元素传递${FILES[@]}xargs

以下是我尝试过的方法及其错误.

尝试1:

echo ${FILES[@]} | xargs -i mv '{}' /path/to/destination
Run Code Online (Sandbox Code Playgroud)

错误:

mv: cannot stat `/path/to/files/file1.zip /path/to/files/file2.zip /path/to/files/file3.zip /path/to/files/file4.zip': …
Run Code Online (Sandbox Code Playgroud)

unix linux bash terminal xargs

13
推荐指数
1
解决办法
7467
查看次数

标签 统计

xargs ×10

shell ×4

linux ×3

terminal ×3

unix ×3

awk ×1

bash ×1

curl ×1

eval ×1

find ×1

macos ×1

sed ×1

stdin ×1

svn ×1

vim ×1

wget ×1