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