파일을 찾아 특정 폴더에 복사할 수 있도록 텍스트 파일에서 파일 이름 목록을 가져오는 스크립트를 작성 중입니다.
스크립트를 실행하면 다음 오류가 발생합니다.
./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