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

2023-12-21

我在不同的子目录中有一堆具有不同名称的文件。我用这些名称创建了一个 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\0-name\0%s\0' <ExtendedList.txt |
xargs -r0 find . -false

The -false只是一个可爱的方式来让列表actual谓词以“... or”开头。

如果名单中的名字ExtendedList.txt很大,如果第二个则可能会失败xargs决定分手-o and -name.

选项-0不可移植,但应该可以工作,例如在 Linux 上或任何有 GNU 的地方xargs.

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

sed "s/.*/-o -name '&'/" ExtendedList.txt |
xargs -r find . -false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给定一个带有文件名的文本文件,如何在当前目录的子目录中查找文件? 的相关文章

随机推荐