首页 > 解决方案 > 仅在标题中带有关键字“mono”的文件上尝试在文件夹中使用 dpkg

问题描述

我目前正在尝试使用 dpkg 安装单声道,并使用 apt-get 安装同一文件夹中的所有其他文件,我知道我需要使用某种形式:

sudo grep 'mono' | dpkg -R --install >/dev/null

但是我有太多未知数来完成它并填写可能存在的任何空白,任何帮助将不胜感激!

标签: linuxbashshellgrepdpkg

解决方案


试试这个:

ls | grep "mono" | sudo xargs dpkg -R --install >/dev/null

ls 只会给出当前目录中的文件。您也可以使用ls -d *mono*ls 和 grep 来代替,但我认为 ls 和 grep 更容易理解

grep 与您一样,但现在已从 ls 输入到 grep on。您可以尝试ls | grep "mono"查看它选择了哪些文件。

然后将 sudo 移动到脚本的 dpkg 部分,以使 dpkg 以 root 身份运行。您拥有它的方式 grep 以 root 身份运行,dpkg 以您的用户身份运行

xargs 将接受您的任何输入,并将其放在下一个命令之后。如果命令行变得太大,它将考虑命令行长度限制并执行多个 dpkg 命令。请注意,如果您的文件名称中有空格,xargs 会将空格视为新文件的开头,您将遇到问题。有解决方案,但实际上,最简单的解决方案是没有包含空格的文件。

在此示例中,假设 grep "mono1.deb 和 "mono2.deb" 中有 2 个文件,执行的命令将是dpkg -R --install mono1.deb mono2.deb. 如果由于某种原因您每次 dpkg 执行只需要一个 deb,您可以将其更改为...xargs -n1 dpkg...它将运行dpkg -R --install mono1.deb并且dpkg -R --install mono2.deb

>/dev/null确保你不会得到任何输出。请注意,您仍然会收到错误消息!


推荐阅读