从文件中获取文件globs并查找这些文件



我有一个名为"file.txt"它包含球体。内容:

*.tex
*.pdf
*C*.png

我需要从文件中获得这些扩展名,然后在当前目录中找到包含这些globs的文件(最好使用find,其他任何东西都可以)。

我用

grep "" file.txt | xargs find . -name 

但是我得到这个错误:

find: paths must precede expression: `*.pdf'

使用Ubuntu

原始代码需要将-n 1参数传递给xargs,仅将一个glob传递给find的每个副本,因为每个glob表达式需要在-name之前(并附加到任何其他-name表达式,-o, ' '或' ';操作符).

更有效的方法是只运行一次find,在构造一个表达式之后,将所有-name操作符放在一个命令行中,与-o操作符分开。

#!/usr/bin/env bash
#              ^^^^- MUST be run with bash, not /bin/sh
find_expr=( -false )
while IFS= read -r line; do
find_expr+=( -o -name "$line" )
done <file.txt
find . '(' "${find_expr[@]}" ')' -print

最新更新