Terminal Unix:查找文本文件中列出的目录文件名并移动到新目录

Terminal Unix:查找文本文件中列出的目录文件名并移动到新目录,terminal,osx-mountain-lion,Terminal,Osx Mountain Lion,我是一个命令行新手,试图找出在MacOSX终端中执行以下命令的合适命令 假设我已将所有文件放置在同一目录中,我希望隔离该目录中文本文件中列出的选定文件集并将其移动到新目录中,如何: 读取.txt文件中列出的选定文件名列表 按文件名查找所有匹配项 隔离所有文件匹配项并将其移动到新目录 我发现这是为了在当前目录中查找filestring.filetype中的一个或两个,并将所有匹配项移动到新目录: find . -type f -iname "*filestring*.filetype" -pr

我是一个命令行新手,试图找出在MacOSX终端中执行以下命令的合适命令

假设我已将所有文件放置在同一目录中,我希望隔离该目录中文本文件中列出的选定文件集并将其移动到新目录中,如何:

  • 读取.txt文件中列出的选定文件名列表

  • 按文件名查找所有匹配项

  • 隔离所有文件匹配项并将其移动到新目录

我发现这是为了在当前目录中查找filestring.filetype中的一个或两个,并将所有匹配项移动到新目录:

find . -type f -iname "*filestring*.filetype" -print0| xargs -0 -J % mv % ~/NewDirectory/
我发现了这个tar命令,但是它创建了“filename.txt”中列出的每个文件名的存档副本

tar -cf - -T filename.txt |(cd /path/to/new/dir && tar -xvf -)
非常感谢您的帮助

我从一个可靠的来源收到了一个有效的解决方案:

cat "filename.txt" | xargs -I % mv % ~/NewDirectory/
读取文件名时
做
mv“$filename”~/NewDirectory/
完成
谢谢!我收到以下bash错误:-bash:read:`fn.txt':不是有效的标识。读取文件名时,它应该是
,而读取fn.txt时,它不应该是
read
的参数是分配每个输入行的变量,而不是要读取的文件的名称(这是
理解后的内容,谢谢!现在当调用:done>fn.txt时,我得到以下信息:-bash:意外标记“done”附近的语法错误不要尝试在注释中发布代码,请将其编辑到您的问题中。对不起,在哪里可以将代码编辑到我的问题中?
while read filename
do 
  mv "$filename" ~/NewDirectory/
done < filename.txt