Mover vários arquivos da lista de nomes de arquivos para uma nova pasta

1

Eu tenho uma lista de nome de arquivo em list.txt, que tem 'abc1.png, abc2.png, abc3.png ....'.

No entanto, não conheço os diretórios onde estão os arquivos.

Eu quero encontrar todos os arquivos no arquivo txt e movê-los para uma nova pasta.

    
por user279816 06.12.2013 / 17:39

3 respostas

0

Você precisa ler cada nome de arquivo por linha e, em seguida, tentar find usando o name option e finalmente mv para o destino:

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

O {} será substituído pelo caminho do arquivo encontrado.

    
por 06.12.2013 / 18:50
0

Supondo que seus nomes de arquivos não contenham "," ou novas linhas e cada arquivo exista em list.txt apenas uma vez. Você também tem naturalmente que mudar o novo diretório para o diretório que deseja. Se algum arquivo em list.txt estiver faltando, o arquivo não será copiado (e nenhuma informação será fornecida).

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

Isso é fácil com um pouco de bash:

primeiro encontre seus arquivos com o find e redirecione a saída em outro arquivo:

for arg in $(cat list.txt); do find / -name $arg -print >> files_with_path.txt; done

depois mv os arquivos:

for arg in $(cat files_with_path.txt); do mv $arg /your/dest/folder; done

    
por 06.12.2013 / 18:27

Tags