在从其他命令的输出传送的目录列表中查找文件

时间:2014-07-09 19:15:23

标签: bash unix find pipe xargs

我需要找到文件的位置。我不想搜索整个系统,我知道我要查找的文件位于与某个软件包相关的目录中。

所以我想在命令find dir -name "filename" > find.out返回的每个目录上执行dpkg -L package_name

我该怎么做?我认为管道和xargs会有用,但我不知道如何告诉xargs成为find命令中的查找目录。

2 个答案:

答案 0 :(得分:3)

find $(dpkg -L package_name) -name "filename" > find.out

答案 1 :(得分:2)

你可以这样做:

#!/bin/bash
readarray -t DIRS < <(exec dpkg -L package_name)  ## Store file list to an array.
find "${DIRS[@]}" -name "filename" > find.out  ## Search all at once.

使用

运行
bash script.sh

或者也许只用一行来做:

readarray -t DIRS < <(exec dpkg -L package_name); find "${DIRS[@]}" -name "filename" > find.out