标签: xargs

在 emacs 上运行 rgrep 时,grep 以代码 123 异常退出

问候 Emacsers

我在“Ubuntu 10.04.1 LTS”上运行 GNU Emacs 23.1.1 并且我在标准 Linux 内核源代码(vanilla)上使用内置 Mx rgrep 执行的任何搜索过早结束,以下错误打印到 emacs echo区域:

Grep exited abnormally with code 123
Run Code Online (Sandbox Code Playgroud)

我已经在 Redhat 系统上看到它一段时间了,还有其他(大型)代码库,有没有人看到或者更好地解决这个问题?

谢谢!

编辑:出于我以外的原因,stackexchange 不允许我在下面编辑我的评论,所以我会在这里更新。

按照下面的评论,我尝试运行 rgrep 在 emacs shell 缓冲区中运行的相同命令

 find . \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*/MCVS -o -path \*/.svn -o -path \*/.git
-o -path \*/.hg -o -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o  -type f \( -name \*.\[ch\] \) -p
rint0 …
Run Code Online (Sandbox Code Playgroud)

linux grep emacs xargs

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

rsync 目录中的 N 个最新文件

将目录中的 n 个最新文件同步到远程服务器的最简单方法是什么?

linux ssh bash rsync xargs

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

带有多个命令的 xargs

我正在尝试一个接一个地对文件列表执行一系列命令。我想知道是否可以在以下行中使用 xargs

ls *.txt | xargs -n 1 -I {} cat {} | grep foo > {}.foo
Run Code Online (Sandbox Code Playgroud)

在哪里

cat {} | grep foo > {}.foo
Run Code Online (Sandbox Code Playgroud)

是我想对每个文件执行的命令。

xargs

6
推荐指数
1
解决办法
1万
查看次数

如何转义文件输出以与'xargs'兼容?

我有这个命令:

find $1 | xargs touch
Run Code Online (Sandbox Code Playgroud)

但是'名称中包含字符的文件失败并显示“xargs:不匹配的单引号”,我猜其他特殊字符会导致同样的问题。

如何转义输出以便此命令适用于所有文件名?

unix xargs escape-characters

6
推荐指数
2
解决办法
4436
查看次数

awk 的管道输出以杀死 -9

我试图杀死任何与 mysql 相关的进程。我正在拼凑一个命令,到目前为止,还没有想出正确的解决方案。另一个考虑是,最后一个进程将对应于命令“grep mysql”——下面命令的一部分。到我尝试杀死它时,此进程将不再存在,因此需要将其从通过管道传输到 kill -9 的输入中排除。完成此任务的最佳方法是什么?到目前为止,我有不完整的命令:

ps -A | grep mysql | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

它具有(假的,就本示例而言)输出

11111
22222
33333  # process id to be excluded
Run Code Online (Sandbox Code Playgroud)

我假设我可以像这样将它传递给 xargs kill -9 :

ps -A | grep mysql | awk '{print $1}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)

并找出排除最后一个 pid 的方法,但我尝试的所有方法似乎都无法正常工作。

unix bash kill awk xargs

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

Xargs 字符串插值,而不是通过插入空格

我想重复

touch ../template/filename
Run Code Online (Sandbox Code Playgroud)

filename来自哪里find。我想xargs应用该touch操作,但我不希望它像通常那样插入一个空格,它派生为:

touch ../template/ filename
Run Code Online (Sandbox Code Playgroud)

这是我不完整的命令。我如何完成它?

find *.html | xargs touch ../template/WHAT-NOW
Run Code Online (Sandbox Code Playgroud)

linux xargs

6
推荐指数
1
解决办法
3957
查看次数

sudo 杀死 ps、awk、xargs 的输出

我想杀死进程名称中包含 foo 的 root 拥有的进程

sudo sh -c "ps aux | grep [f]oo  | awk '{print $2}' | xargs kill -15"
Run Code Online (Sandbox Code Playgroud)

此命令失败,因为 awk 和 xargs 被忽略。

sudo sh -c "ps aux | grep [f]oo  | awk '{print $2}' | xargs kill -15"
Run Code Online (Sandbox Code Playgroud)

所以 kill 收到错误的参数

kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List …
Run Code Online (Sandbox Code Playgroud)

sudo awk command-line xargs

6
推荐指数
1
解决办法
5605
查看次数

如何使用 xargs 替换但保留空格分隔符?

考虑以下xargs用法:

echo Alice Bob Carol | xargs -n1 echo
Run Code Online (Sandbox Code Playgroud)

它产生三个这样的 echo 语句

echo Alice 
echo Bob 
echo Carol 
Run Code Online (Sandbox Code Playgroud)

考虑这个修改后的xargs用法:

echo Alice Bob Carol | xargs -n1 -I% echo Hello, %. How are you?
Run Code Online (Sandbox Code Playgroud)

它生成一个 echo 语句而不是所需的三个:

echo Hello, Alice Bob Carol. How are you?
Run Code Online (Sandbox Code Playgroud)

这是因为-I根据手册页更改了输入流的分隔方式:

未加引号的空格不会终止输入项;相反,分隔符是换行符

使用替换技术时是否可以保留空格分隔符?

我想出的最好的方法是用来-d指定空格分隔符,有没有更好的方法?

echo -n Alice Bob Carol | xargs -n1 -I% -d\  echo Hello, %. How are you?
Run Code Online (Sandbox Code Playgroud)

xargs

6
推荐指数
0
解决办法
2802
查看次数

Xargs:在执行之前将工作目录更改为文件路径?

我有一个很大的 RAR 档案文件夹。文件夹级别有明显的层次结构。我想一次解压缩整个档案集。

我有以下单线,可以工作:

find -name "*.rar" -print0 | xargs -0 -n 1 -P 4 unrar x
Run Code Online (Sandbox Code Playgroud)

(请注意,我们并行运行四个线程以加快操作速度。:-))

此命令的问题在于 xargs 是在每个 RAR 文件的顶级目录中执行的。这意味着所有输出都被转储到顶级文件夹中。

相反,我希望输出与 RAR 存档存在于同一文件夹中。

例子:

Top level
 |--FolderA
 |----File1.rar
 |----File2.rar
 |--FolderB
 |----File1.rar
 |----File2.rar
 |----File3.rar
 |--FolderC
 |----File1.rar
 |----File2.rar
Run Code Online (Sandbox Code Playgroud)

每个“File1.rar”文件都包含一个同名文件。因此,将它们全部提取到顶级文件夹会导致覆盖问题。

总而言之,我想提取上述层次结构中的所有 RAR 文件。我希望每个 RAR 文件的内容都存在于 RAR 文件所在的文件夹中。

在我看来,解决方案是以某种方式设置工作目录,然后在那里运行 unrar 命令表单。但是,由于 find 命令给了我文件名,而不是目录,我不能做类似的事情

| xargs -I{} -n 1 -P 4 cd {} \; unrar x {}
Run Code Online (Sandbox Code Playgroud)

没有编写一个 Perl 或 Python 脚本来环绕 unrar 命令并处理将提供的路径分成其部分并执行命令,有没有更好的方法来实现这一点?

xargs working-directory

6
推荐指数
1
解决办法
2289
查看次数

将 xargs 与 pdftk 一起使用

我正在使用以下代码连接当前目录中的所有 pdf 文件:

find . -iname '*.pdf'|sort|xargs|xargs -I {} pdftk {} cat output union.pdf
Run Code Online (Sandbox Code Playgroud)

第一次调用 xargs 的作用是将 sort 的输出转换为一行,项目之间用空格分隔。但结果是这样的:

Error: Unable to find file.
Error: Failed to open PDF file: 
   ./001.pdf ./002.pdf ./003.pdf ./004.pdf ./007.pdf ./010.pdf ./031.pdf ./057.pdf ./077.pdf ./103.pdf ./131.pdf ./155.pdf ./179.pdf ./205.pdf ./233.pdf ./261.pdf ./285.pdf ./313.pdf ./331.pdf ./357.pdf ./383.pdf ./411.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.
Run Code Online (Sandbox Code Playgroud)

xargs 是否将参数传递给带有周围引号的 pdftk?如何防止这种情况?(空格、转义以及它们与命令交互的方式总是让我发疯......)

imagemagick xargs

6
推荐指数
1
解决办法
561
查看次数