arquivos de subconjunto em uma pasta baseada em uma lista

0

Eu tenho uma pasta "all_images /" com mais de 1000 arquivos de imagem chamados "Image1.tif", "Image2.tif" e assim por diante.

Eu tenho um arquivo de texto "extract_images_list.txt", que é uma lista de imagens que eu quero extrair desta pasta.

Exemplo:

Image23.tif

Image100.tif

Image248.tif

Eu quero mover apenas os arquivos mencionados no meu arquivo de texto para outra pasta "extract_images /"

Eu só conseguia pensar em

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

onde eu forneceria as imagens que não quero.

Existe uma maneira melhor de fazer isso?

    
por biobudhan 11.11.2016 / 10:22

1 resposta

1

Com a ressalva de que esta solução não pode lidar com coisas como o caractere de alimentação de linha em um nome de arquivo:

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

Isso passa por extract_images_list.txt linha por linha, lendo-as na variável file (o argumento -r é necessário para fazer com que ele trate as barras invertidas como barras invertidas literais, e IFS= não remove espaços em branco) , então move cada linha para o diretório extract_images.

    
por 11.11.2016 / 10:31