Articles of xargs

xargs -I%/ path /%

如果洪stream有一个问题,像在ID列删除硬盘驱动器上的数据,它有像“ID *”号码。 我想过滤在ID列表中有一个符号“*”的种子列表的ID(LIKE ID *或1 *,2 *,25 *),并从种子列表中删除它们。 完整的命令是: /usr/bin/transmission-remote 127.0.0.1:9091 –auth ts:ts -l | grep "*" | awk '{print $1}' \ | xargs -n 1 -I % /usr/bin/transmission-remote 127.0.0.1:9091 –auth ts:ts -t% -r 我期待的结果是: /usr/bin/transmission-remote 127.0.0.1:9091 –auth ts:ts -t ID* -r 但是出了点问题。 传输说: 127.0.0.1:9091/transmission/rpc/ responded: "success" 但是洪stream没有从列表中删除。 我如何看到最终结果与预期的结果进行比较?

将多个文件移动到多个目录

我有5个文件名为file1.txt,file2.txt … file5.txt,我想将每个文件移动到一个名为dir1,dir2 … dir5的相应目录中。 所以file1.txt被移动到dir1,file2.txt被移动到dir2等等。 有没有办法在命令行中使用mv和xargs来做到这一点? 我只是build议xargs因为我非常喜欢Robert Gamble提供的这个答案 ,提出了如何将一个文件复制到多个目录的问题。 echo dir1 dir2 dir3 | xargs -n 1 cp file1

如何使用`xargs`的参数作为数组的索引

我想用xargs的aruments作为这个数组的索引,这是脚本: 1 #!/bin/bash 2 array[0]=x 3 array[1]=y 4 echo array : ${array[0]}, ${array[1]} 5 echo -n {0..1} | xargs -I index -d" " echo index,${array[index]} 这是输出: [usr@linux scripts]$ sh test.sh array : x, y 0,x 1,x 您可以看到数组无法正确接受索引,它始终是第一个。 我怎样才能得到这样的输出: array : x, y 0,x 1,y 我用echo命令展示了这个例子,然而,我真正的目标是另一个命令,就像这样: echo -n {0..1} | xargs -I index -d" " somecommand […]

Xargs的最佳输出格式

我正在编写一个简单的程序来运行我的系统上的各种目录中的一堆文件。 它基本上涉及到打开它们并检查有效的XML。 这个程序的其中一个选项是列出不良的xml文件。 这导致我的问题。 用于XARGS的最佳输出格式是什么? 我认为把每个条目放在一个换行符上就足够了,但似乎有点混乱。 因为文件名都有空格。 所以说我的输出是: ./dir name 1/file 1.xml ./dir name 2/file 2.xml ./dir name 3/file 3.xml 我尝试了下面的命令,但它一直说“没有这样的文件或目录”。 ./myprogram.py –list BADXML | xargs -d '\n' cat 所以..我要么误解如何使用XARGS或者我需要稍微改变我的程序的输出格式。 我不确定最好用最简单的路线)。 如果我可以避免它,我会讨厌总是input一堆xarg选项。

“xargs -a文件”将文件复制到文件夹

我打算使用xargs -a来读取一个文件的内容,其中有一个文件名列表。 我的目录工作如下: backups file1.bak file2.bak file3.bak bakfiles.txt 带有文件名的文件名: bakfiles.txt bakfiles.txt内容: file1.bak file2.bak file3.bak 所以基本上我试图将file1.bak,file2.bak,file3.bak复制到文件夹backups 。 但是使用bakfiles.txt的内容来做到这一点。 我试过了: xargs -a bakfiles.txt | cp {} backups 但是我得到的错误: cp: cannot stat `{}': No such file or directory 我应该提到我也试过: xargs -a bakfiles.txt cp {} backups 并得到错误: cp: target `file3.bak' is not a directory

xargs sh -c跳过第一个参数

我正在尝试编写一个脚本,它使用find和xargs将大文件中的旧文件归档。 这是行: find /tmp/messages/ -mtime +9 -print0 | xargs -x -t -0 -n 1000 sh -c 'tar rPf /tmp/backup.tar "$@" && rm -f "$@"; sleep 1 && echo Finished one loop: $(date +"%T")' 该脚本主要工作,但它跳过第一个文件每次命令运行1000个文件,我似乎无法弄清楚为什么。 这里是另一个例子(我试着玩简单的命令来看看会发生什么: 如果我只使用echo和xargs,我可以有效地运行一个命令: $ echo abcdef| xargs -n 2 echo "$@" ab cd ef $ echo abcdef| xargs -n 3 echo "$@" […]

移动文件在Linux上recorically

find ./dir -type f -iname "*.t[argz]*[bz2]" -print | xargs mv –target-directory=dir find ./dir -type f -iname "*.t[argz]*[bz2]" -print | xargs mv –target-directory=dir似乎在名称中有空格的文件上失败。 如何改善呢? 或替代? 感谢以下答案:我的mv不支持 – null或-0,我正在使用cygwin: $ mv – 帮助 用法:mv [OPTION] … [-T] SOURCE DEST 或者:mv [OPTION] … SOURCE … DIRECTORY 或者:mv [OPTION] … -t目录来源… 将SOURCE重命名为DEST,或将SOURCE(s)移至DIRECTORY。 强制性参数t 。

运行展开查找结果

我试图在find命令find的所有文件上运行expand shell命令。 我试过了–exec和xargs但都失败了。 谁能解释我为什么? 我在logging的Mac上。 find . -name "*.php" -exec expand -t 4 {} > {} \; 这只是创build一个包含所有输出的文件,而不是覆盖每个find的文件本身。 find . -name "*.php" -print0 | xargs -0 -I expand -t 4 {} > {} 而这只是输出 4 {} xargs: 4: No such file or directory

单行打印“grep -o”输出

如何在单行中打印grep -o输出? 我正在尝试打印: $ echo "Hello Guys!" |grep -E '[AZ]' Hello Guys! $ echo "Hello Guys!" |grep -Eo '[AZ]' <—-Multiple lines H G $ echo "Hello Guys!" |grep -Eo '[AZ]' 期望的输出: HG 我可以使用下面的命令便宜地实现它,但问题是,字母数量(在这种情况下是3)可能是dynamic的。 所以这个方法不能使用。 echo "HEllo Guys!" |grep -oE '[AZ]' |xargs -L3 |sed 's/ //g' HEG

对xargs生成的命令的单个结果执行grep

是否有可能grep由xargs产生的命令的结果? 作为一个例子,我正在尝试下面的命令 findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/'|xargs -I {} cleartool lsh {}|grep -m 1 'user' 但似乎grep正在执行findbranch返回的整个结果集,而不是单独的lsh结果 作为一个例子,我想从上面是,由findbranch和sed结合返回的每个文件,我想find该版本是由某个用户最后修改。 注意如果出现问题,findbranch是一个内部工具。