bash script para encontrar arquivos acha que o nome do arquivo deve ser um inteiro

0

Estou escrevendo um script para obter uma lista de nomes de arquivo de um arquivo de texto, para que ele possa localizar os arquivos e copiá-los para uma pasta específica.

Quando executo o script, recebo o seguinte erro:

./findfile.sh: line 8: spam.txt: syntax error: invalid arithmetic operator (error token is ".txt")

Por que o Bash acha que isso deve ser um número inteiro e como isso pode ser corrigido?

#!/bin/bash
#Find files from a list in a file and copy them to a common folder

mapfile -t filelist < filelist.txt

for i in ${filelist[i]}
do
    xargs find ~ -name '${filelist[i]}' | cp --parents ~/Documents/foundfiles/${filelist[i]}
done
    
por agc 05.05.2018 / 23:45

1 resposta

0

Eu não sei exatamente o que você está tentando fazer com xargs e parece que você está perdendo um argumento no seu CP. É ~/Documents/foundfiles/${filelist[i]} onde você deseja copiar para ?

Aqui está o código que funciona para mim:

#!/usr/bin/env bash

mapfile -t filelist < ~/tmp/filelist.txt

for file in "${filelist[@]}"; do
    find ~ -name "$file" -exec cp --parents {} ~/tmp/dest/ \;
done
    
por 06.05.2018 / 00:04