首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

xargs的使用解决方案

2013-09-26 
xargs的使用1.英语不太好 ,看了xargs的man 页面,也没看太明白,如果才能提高技术机英语水平?2.这条命令我是

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 还不错

热点排行