读书人

xargs的使用解决方案

发布时间: 2013-09-26 10:32:35 作者: rapoo

xargs的使用
1.英语不太好 ,看了xargs的man 页面,也没看太明白,如果才能提高技术机英语水平?
xargs的使用解决方案


2.这条命令


我是想让ls显示搜索的时候给每个文件的路径前缀都加上去,求人指定原因,或者更好的方法,谢谢了,,
xargs的使用解决方案 awk shell
[解决办法]
awk定义的value不用加$

ls ftpTool
[解决办法]
awk -v var="ftpTool/" '{print var$1}'

[解决办法]
1. xargs cmd 的作用就是把输入进行分割,作为参数执行命令cmd;
使用xargs的一个原因就是命令的输入长度都是由限制的,比如1K或者64K, xargs能把输入进行分割,然后调用分割后的参数多次调用cmd, 看下面的例子

fb82:/home/mymtom/tmp/xargs$ cat args.c cmd.c
/*-
* Copyright (C) mymtom
*
* vi:set ts=4 sw=4:
*/
#ifndef lint
static const char rcsid[] = "$Id$";
#endif /* not lint */

/**
* @file args.c
* @brief
*/

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int i;

if (argc != 2)
exit(1);

for (i = 0; i < atoi(argv[1]); i++) {
printf("arg%d\n", i);
}

return 0;
}



/*-
* Copyright (C) mymtom
*
* vi:set ts=4 sw=4:
*/


#ifndef lint
static const char rcsid[] = "$Id$";
#endif /* not lint */

/**
* @file cmd.c
* @brief
*/

#include <stdio.h>

int main(int argc, char *argv[])
{
int i;

for (i = 0; i < argc; i++) {
printf("%s ", argv[i]);
}
printf("\n");

return 0;
}



fb82:/home/mymtom/tmp/xargs$ ./args 10
arg0
arg1
arg2
arg3
arg4
arg5
arg6
arg7
arg8
arg9
fb82:/home/mymtom/tmp/xargs$ ./args 10
[解决办法]
xargs ./cmd
./cmd arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9
fb82:/home/mymtom/tmp/xargs$ ./args 10
[解决办法]
xargs -n1 ./cmd
./cmd arg0
./cmd arg1
./cmd arg2
./cmd arg3
./cmd arg4
./cmd arg5
./cmd arg6
./cmd arg7
./cmd arg8
./cmd arg9
fb82:/home/mymtom/tmp/xargs$ ./args 10
[解决办法]
xargs -n2 ./cmd
./cmd arg0 arg1
./cmd arg2 arg3
./cmd arg4 arg5
./cmd arg6 arg7
./cmd arg8 arg9
fb82:/home/mymtom/tmp/xargs$ ./args 10
[解决办法]
xargs -n3 ./cmd
./cmd arg0 arg1 arg2
./cmd arg3 arg4 arg5
./cmd arg6 arg7 arg8
./cmd arg9
fb82:/home/mymtom/tmp/xargs$ ./args 10
[解决办法]
xargs -n5 ./cmd
./cmd arg0 arg1 arg2 arg3 arg4
./cmd arg5 arg6 arg7 arg8 arg9
fb82:/home/mymtom/tmp/xargs$ ./args 10
------解决方案--------------------


xargs -n4 ./cmd
./cmd arg0 arg1 arg2 arg3
./cmd arg4 arg5 arg6 arg7
./cmd arg8 arg9
fb82:/home/mymtom/tmp/xargs$

其中xargs -n1 ./cmd 的选项告诉xargs每次只用一个参数调用cmd
2.
ls ftpTool
[解决办法]
awk -v var="ftpTool/" '{print $var$1}'
改为
ls ftpTool
[解决办法]
awk -v var="ftpTool/" '{print var$1}'
awk里var里个变量, 不要加$

[解决办法]
楼主说的是shell命令xargs,就是吧上个命令的输出作为这个xargs 后面命令的参数。
[解决办法]




2.这条命令

我是想让ls显示搜索的时候给每个文件的路径前缀都加上去,求人指定原因,或者更好的方法,谢谢了,,
xargs的使用解决方案


1. 没别的办法,多看,熟悉linux/unix中的概念。这儿有个网站也许有用(还好玩):http://explainshell.com/。有不懂的命令,这个网站会帮你找出有关命令中参数的文档。

2. 从http://stackoverflow.com/questions/246215/how-can-i-list-files-with-their-absolute-path-in-linux抄的:
Use this for dirs:

ls -d -1 $PWD/**

this for files:

ls -d -1 $PWD/*.*

this for everything:

ls -d -1 $PWD/**/*

Taken from here http://www.zsh.org/mla/users/2002/msg00033.html


还可以:

find /full/path -maxdepth 1


可以用这个命令试试前面提到的网站。
------解决方案--------------------


最近用了下sublime 还不错

读书人网 >perl python

热点推荐