给定一个包含文件名的文本文件,如何在当前目录的子目录中查找文件?

Given a text file with file names, how can I find files in subdirectories of the current directory?

我在不同的子目录中有一堆不同名称的文件。我用这些名称创建了一个 txt 文件,但我无法使用该文件使 find 正常工作。我看过关于创建列表时出现问题的帖子,关于不使用 find 的帖子(虽然不明白原因)。建议?我很难想出一个例子,因为我不知道如何重现目录结构。 以下是文件名(以防格式问题)

AO-169 
AO-170 
AO-171 

我想到的最好的是:

cat ExtendedList.txt | xargs -I {} find . -name {}

它显然死在它找到的第一个目录中。

我也试过了

ta="AO-169 AO-170 AO-171"

find . -name $ta

但它抱怨 find: AO-170: unknown primary or operator

如果你想问“我怎样才能在当前目录的子目录中找到具有这些名称的文件”,答案将类似于

xargs printf -- '-o[=10=]-name[=10=]%s[=10=]' <ExtendedList.txt |
xargs -r0 find . -false

-false 只是让 actual 谓词列表以“...或”开头的可爱方式。

如果 ExtendedList.txt 中的名称列表很大,如果第二个 xargs 决定在 -o-name 之间拆分它,这可能会失败。

选项 -0 不可移植,但应该可以使用,例如在 Linux 或任何有 GNU xargs.

的地方

如果你能保证 ExtendedList.txt 中的字符串列表不包含任何对 shell 有问题的字符(如单引号),你可以简单地说

sed "s/.*/-o -name '&'/" ExtendedList.txt |
xargs -r find . -false