基于列表的文件夹中的子集文件

基于列表的文件夹中的子集文件

我有一个文件夹“all_images/”,其中包含 1000 多个图像文件,名为“Image1.tif”、“Image2.tif”等。

我有一个文本文件“extract_images_list.txt”,它是我想从此文件夹中提取的图像列表。

例子:

图像23.tif

图像100.tif

图像248.tif

我只想将文本文件中提到的那些文件移动到另一个文件夹“extract_images/”

我只能想到

  rm (Image1|Image2|Image3|...|...|....|)

我会在其中提供我不想要的图像。

有更好的方法吗?

答案1

需要注意的是,该解决方案无法处理文件名中的换行符之类的情况:

mkdir extract_images 2>/dev/null
while IFS= read -r file; do
  mv "$file" extract_images
done < extract_images_list.txt

这通过将它们读入变量来逐行遍历 extract_images_list.txt file-r需要该参数才能将反斜杠视为文字反斜杠,并IFS=使其不去除空格),然后将每一行移动到 extract_images 目录。

相关内容