如何解决如何移动在其标题中包含字符串的文件,这些文件来自 txt 文件,每行列出一个字符串
我需要将标题中包含多个字符串之一的任何文件从一个目录移动到另一个目录。这些字符串位于一个名为 brh.txt 的文件中,并且彼此重叠,每行一个。这是我尝试过的:
for i in $(cat brh.txt); do find ./hehert -type f -iname '*$i*' -exec mv -t /home/bort/misc/ {} \+; done
这运行了一段时间,但到最后,尽管有大量应该匹配的文件,但目标目录中没有出现新文件。谁能给我指点一下?
解决方法
不要使用单引号 '*$i*'
进行变量扩展,使用双引号 "*$i*"
。此外,最好不要 $(cat brh.txt)
因为如果任何文件名包含空格,它们将被拆分。相反,您可以使用 mapfile
mapfile -t strings < brh.txt
然后在 for 循环中使用字符串数组
for i in "${strings[@]}"; do find ./hehert -type f -iname "*$i*" -exec mv -t /home/bort/misc/ {} \+; done
或者,只需遍历文件中的行
while IFS= read -r string; do
find ./hehert -type f -iname "*$string*" -exec mv -t /home/bort/misc/ {} \+
done < brh.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。