将多个文件从文件名列表移动到新文件夹

将多个文件从文件名列表移动到新文件夹

我在 list.txt 中有一个文件名列表,其中包含“abc1.png、abc2.png、abc3.png...”。

但是,我不知道文件位于哪个目录。

我想找到txt文件中的所有文件,并将它们移动到新文件夹中。

答案1

你需要逐行读取每个文件名,然后尝试find使用该name选项,最后将mv其达到目标:

while IFS= read -r filename; do
    find /somewhere -type f -name "$filename" -exec mv -- {} /somewhere/else/ \;
done < file.txt

{}被替换为找到的文件路径。

答案2

假设您的文件名不包含“,”或换行符,并且每个文件在 list.txt 中仅存在一次。您还必须将 newdirectory 更改为您想要的目录。如果 list.txt 中缺少任何文件,则不会复制该文件(并且不会提供任何信息)。

sed -s "s/, /\\n/g" list.txt | xargs -IFILE -n1 find -name FILE -exec mv {} newdirectory \;

答案3

使用一些 bash 很容易做到这一点:

首先使用 find 查找文件并将输出重定向到另一个文件中:

对于 $(cat list.txt) 中的 arg;执行 find / -name $arg -print >> files_with_path.txt;完成

然后 mv 文件:

对于 $(cat files_with_path.txt) 中的 arg;执行 mv $arg /your/dest/folder;完成

相关内容