从部分名称的.txt列表中移动文件

时间:2013-09-26 20:09:04

标签: linux shell xargs mv

我想将一个文件集合从一个目录移动到另一个目录。

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

示例:

- >文件名: “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

任何帮助都会被贬低!!!

1 个答案:

答案 0 :(得分:3)

简单地说:

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

此外,虽然我不建议使用单词拆分,但使代码工作的方法只是将$符号与参数一起正确放置:

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