我正在编写一个脚本来从文本文件中获取文件名列表,以便它可以找到文件并将它们复制到特定文件夹。
当我运行脚本时,出现以下错误:
./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