2

我正在尝试将一组文件从一个目录移动到另一个目录。

我有一个 .txt 列表,其中包含我要移动的文件的部分名称(每行一个)。

例子:

-> 文件名:“00012377000160-52200308419 -20100101-20101231-G-E92F9BA0A0C932C331273FCD845719813F0B617-1-GTOGR-FDS.txt”

-> 我的 .txt 文件中的文件名:E92F9BA0A0C932C331273FCD845719813F0B617

看起来很简单,我必须: 1- 找到名称包含存储在我的 .txt 文件中的字符串的文件 2- 然后将它们移动到目录

但是.....我做错了什么(也许是扩展顺序?)....

这就是我正在尝试的方式:

for PARTNAME in `cat LIST.TXT`; do mv *"$PARTNAME"* /NEWDIR ; done

通配符 *(在 PARTIAL 文件名之后或之前的任何内容)都不起作用......它被认为是文件名的一部分,instaed

任何帮助将不胜感激!!!

4

1 回答 1

4

简单地:

while read -r PART; do
    mv *"$PART"*.txt /NEWDIR
done < list.txt

此外,虽然我不推荐分词,但让你的代码工作的方法只是将你的 $ 符号与参数一起正确放置:

for PARTNAME in `cat LIST.TXT`; do mv *"$PARTNAME"* /NEWDIR ; done
于 2013-09-26T20:11:57.860 回答