【问题标题】:How to move files containing, inside their title, strings from a txt file listing one string per line如何从每行列出一个字符串的 txt 文件中移动标题内包含字符串的文件
【发布时间】:2021-06-09 15:37:44
【问题描述】:

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

for i in $(cat brh.txt); do find ./hehert -type f -iname '*$i*' -exec mv -t /home/bort/misc/ {} \+; done

这会运行一段时间,但到最后,目标目录中不会出现新文件,尽管有很多文件应该匹配。谁能赐教?

【问题讨论】:

    标签: linux find exec mv


    【解决方案1】:

    变量扩展不要使用单引号'*$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
    

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 2019-07-28
      • 2022-11-25
      • 2011-06-26
      • 2016-04-23
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多