Linux 如何从每行列出一个字符串的txt文件中移动标题中包含字符串的文件

Linux 如何从每行列出一个字符串的txt文件中移动标题中包含字符串的文件,linux,find,exec,mv,Linux,Find,Exec,Mv,我需要将标题中包含多个字符串之一的任何文件从一个目录移动到另一个目录。这些字符串位于一个名为brh.txt的文件中,并且位于其他字符串的顶部,每行一个。以下是我尝试过的: 以美元表示的i的(cat brh.txt);确实找到./hehert-type f-iname'*$i*'-execmv-t/home/bort/misc/{}\+;完成 这会运行一段时间,但在运行结束时,目标目录中不会出现新文件,尽管加载了应匹配的文件。有人能告诉我吗?不要使用单引号'*$i*'进行变量扩展,请使用双引号“*

我需要将标题中包含多个字符串之一的任何文件从一个目录移动到另一个目录。这些字符串位于一个名为brh.txt的文件中,并且位于其他字符串的顶部,每行一个。以下是我尝试过的:

以美元表示的i的
(cat brh.txt);确实找到./hehert-type f-iname'*$i*'-execmv-t/home/bort/misc/{}\+;完成


这会运行一段时间,但在运行结束时,目标目录中不会出现新文件,尽管加载了应匹配的文件。有人能告诉我吗?

不要使用单引号
'*$i*'
进行变量扩展,请使用双引号
“*$i*”
。另外,最好不要
$(cat brh.txt)
,因为如果任何文件名包含空格,它们将被拆分。相反,您可以使用
mapfile

mapfile -t strings < brh.txt
或者,只需迭代文件中的行即可

while IFS= read -r string; do
    find ./hehert -type f -iname "*$string*" -exec mv -t /home/bort/misc/ {} \+
done < brh.txt
而IFS=read-r字符串;做
查找./hehert-type f-iname“*$string*”-exec mv-t/home/bort/misc/{}\+
完成
while IFS= read -r string; do
    find ./hehert -type f -iname "*$string*" -exec mv -t /home/bort/misc/ {} \+
done < brh.txt