Bash 如何使用数组将文件从一个目录移动到另一个目录
我想使用一组关键字将我拥有的文件从一个目录移动到另一个目录,以查找和分类文件。我的find命令有一些语法问题,我不知道如何解决它。错误是: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
./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;执行…