查找文件的 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

相关内容