Linux 此命令如何在Rpm包中查找文件

Linux 此命令如何在Rpm包中查找文件,linux,shell,command,find,rpm,Linux,Shell,Command,Find,Rpm,我已经给出了一个命令,该命令将在其中一个rpm包insatled中找到一个名为/etc/limits的特定文件,但在我的系统上运行时得到的错误并不是期望的结果。下面是命令 find . -name '*.rpm' | while read A; do $RPM -qpl $A | grep etc/limits; \ if [ $? -eq 0 ]; then echo $A; fi; done /etc/limits 当我运行此命令时,出现以下错误 bash: syntax error ne

我已经给出了一个命令,该命令将在其中一个rpm包insatled中找到一个名为/etc/limits的特定文件,但在我的系统上运行时得到的错误并不是期望的结果。下面是命令

find . -name '*.rpm' | while read A; do $RPM -qpl $A | grep etc/limits; \
if [ $? -eq 0 ]; then echo $A; fi; done
/etc/limits
当我运行此命令时,出现以下错误

bash: syntax error near unexpected token `/etc/limits'

谁能告诉我这里出了什么问题吗?

很明显,您的
while
循环从
find
获取输入,因此在脚本中
完成后不需要
/etc/limits
。说:

find . -name '*.rpm' | while read A; do
  $RPM -qpl $A | grep /etc/limits;
  if [ $? -eq 0 ]; then echo $A; fi;
done
应该有用。如果您想让
while
循环从文件中读取,您应该说:

while read A; do ... done < /path/to/input/file
在读取一个文件时;做完成
谢谢@devnull,但每当我发出此命令时,它都会告诉我“bash:-qpl:command not found”,但qpl在我的机器上工作得非常好。我认为您的脚本中有一个变量
RPM
,定义为
RPM=RPM
。如果不是这样的话,那么与其说
$RPM
不如说
RPM
。它现在可以工作了,但我仍然无法缩小搜索范围,在完成所需的完整路径或/etc/limit后使用/path/to/input/file就够了???@amitsightomar我不确定你在问什么,但使用两种方法中的任何一种。不要在
时通过管道传输到
,同时让它从文件中读取。这是命令成功使用的地方,但对我来说,它不起作用1。您说的是“rpm package installed”,但您使用的是
-p
标志,这意味着您正在目录树(从
)中搜索rpm,而不是已安装的rpm。2.要搜索已安装的rpm,只需执行
rpm-q--whatprovides/etc/limits