给定一个包含文件名的文本文件,如何在当前目录的子目录中查找文件?
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
我在不同的子目录中有一堆不同名称的文件。我用这些名称创建了一个 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