Bash 如何使用数组将文件从一个目录移动到另一个目录

Bash 如何使用数组将文件从一个目录移动到另一个目录,bash,Bash,我想使用一组关键字将我拥有的文件从一个目录移动到另一个目录,以查找和分类文件。我的find命令有一些语法问题,我不知道如何解决它。错误是: ./Process.sh: line 7: \*building\*: syntax error: operand expected (error token is "\*building\*") 以下是脚本: #!/bin/bash declare -a keyword=("*building*") declare -a directo

我想使用一组关键字将我拥有的文件从一个目录移动到另一个目录,以查找和分类文件。我的find命令有一些语法问题,我不知道如何解决它。错误是:

./Process.sh: line 7: \*building\*: syntax error: 
        operand expected (error token is "\*building\*")
以下是脚本:

#!/bin/bash
declare -a keyword=("*building*")
declare -a directory=("Building")

for i in "${keyword[@]}"
do
    echo find /run/media/_Incoming/ -type f -name "${keyword[$i]}" \
        -exec echo mv -t /run/media/"${directory[$i]}"/ {} +
done

数组使用0、1、2等数字作为索引。索引
$i
不是一个数字,而是数组
关键字
的一个元素
${keyword[$i]}
扩展为
${keyword[*building*]}
,它不是有效的数组项

你可能想写:

#!/bin/bash
declare -a keyword=("*building*")
declare -a directory=("Building")

for i in "${!keyword[@]}"
do
    echo find /run/media/_Incoming/ -type f -name "${keyword[$i]}" \
        -exec echo mv -t /run/media/"${directory[$i]}"/ {} +
done
${!关键字[@]}
(注意开头的
)扩展到数组
关键字的所有索引。由于
find
前面有
echo
,这将打印命令

find /run/media/_Incoming/ -type f -name *building* -exec echo mv -t /run/media/Building/ {} +

建议使用关联数组可能是个好主意:
declare-aass=([Building]=“*Building*”);对于“${!ass[@]}”中的i;执行…