파일을 찾는 bash 스크립트는 파일 이름이 정수여야 한다고 생각합니다.

파일을 찾는 bash 스크립트는 파일 이름이 정수여야 한다고 생각합니다.

파일을 찾아 특정 폴더에 복사할 수 있도록 텍스트 파일에서 파일 이름 목록을 가져오는 스크립트를 작성 중입니다.

스크립트를 실행하면 다음 오류가 발생합니다.

./findfile.sh: 8행: spam.txt: 구문 오류: 잘못된 산술 연산자('.txt' 태그가 붙은 오류)

Bash는 이것이 정수여야 한다고 생각하는 이유와 이를 수정하는 방법은 무엇입니까?

#!/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

답변1

나는 당신이 무엇을 원하는지 잘 모르겠습니다 xargs. 그리고 당신의 cp에 인수가 누락된 것 같습니다. ~/Documents/foundfiles/${filelist[i]}복사하려는 곳이 바로 여기입니다.도착하다?

이것은 나에게 맞는 코드입니다.

#!/usr/bin/env bash

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

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

관련 정보