목록을 기반으로 하는 폴더의 하위 집합 파일

목록을 기반으로 하는 폴더의 하위 집합 파일

"Image1.tif", "Image2.tif" 등의 이름을 가진 1000개 이상의 이미지 파일이 포함된 "all_images/" 폴더가 있습니다.

이 폴더에서 추출하려는 이미지 목록인 "extract_images_list.txt" 텍스트 파일이 있습니다.

예:

image23.tif

image100.tif

image248.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 디렉터리로 이동합니다.

관련 정보