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

时间:2019-02-06 18:30:44

标签: bash

我想使用一组关键字将文件中的文件从一个目录移动到另一个目录,以对文件进行查找和分类。我的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

1 个答案:

答案 0 :(得分:2)

数组使用数字(例如0、1、2)作为索引。您的索引Dictionary<char, List<ContactModel>> lst = Contacts.GroupBy(c => c.PeopleName[0]) .ToDictionary(g => g.Key, g => g.ToList()); 不是数字,而是数组$i 元素。 keyword扩展为${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 (首先注意${!keyword[@]})扩展到数组!的所有索引。由于keyword前面的echo会打印命令

find