我有下面这样的脚本,它应该使用“find”将所有以扩展名结尾的文件(在我给出的列表中)复制到目标目录。然而,它不起作用。我尝试将“改为”、“查找”、“查找”,但仍然没有成功。
请您帮忙看看,看看我的编码出了什么问题,非常感谢。
#!/bin/bash
vDirIn=/IN/
vDirOut=/OUT/
vAction="Copy"
vExtn="avi,mkv,mp4"
vExtnArr=($(echo "$vExtn" | tr ',' '\n'))
for vExtnArr_i in "${!vExtnArr[@]}"
do
echo "$vExtnArr_i: ${vExtnArr[vExtnArr_i]}"
if [ "$vAction" == "Copy" ]
then
find "$vDirIn" -name '*.${vExtnArr[vExtnArr_i]' -exec cp -rf {} $vDirOut \;
else
find "$vDirIn" -name '*.${vExtnArr[vExtnArr_i]' -exec mv -f {} $vDirOut \;
fi
done
这是调试消息,这就是为什么我在“查找”行不断更改的原因。我认为输出看起来很有趣
bash -x ./CopyMediaFiles.sh
+++ readlink -f ./CopyMediaFiles.sh
++ dirname '/CopyMediaFiles.sh'
+ vPGMDir='/'
+ date
+ vDirIn=/IN/
+ vDirOut=/OUT/
+ vAction=Copy
+ vExtn=avi,mkv,mp4
+ vExtnArr=($(echo "$vExtn" | tr ',' '\n'))
++ tr , '\n'
++ echo avi,mkv,mp4
+ for vExtnArr_i in '"${!vExtnArr[@]}"'
+ echo '0: avi'
0: avi
+ '[' Copy == Copy ']'
+ find /IN/ -name '*.${vExtnArr[vExtnArr_i]' -exec cp -rf '{}' /OUT/ ';'
+ for vExtnArr_i in '"${!vExtnArr[@]}"'
+ echo '1: mkv'
1: mkv
+ '[' Copy == Copy ']'
+ find /IN/ -name '*.${vExtnArr[vExtnArr_i]' -exec cp -rf '{}' /OUT/ ';'
+ for vExtnArr_i in '"${!vExtnArr[@]}"'
+ echo '2: mp4'
2: mp4
+ '[' Copy == Copy ']'
+ find /IN/ -name '*.${vExtnArr[vExtnArr_i]' -exec cp -rf '{}' /OUT/ ';'
+ for vExtnArr_i in '"${!vExtnArr[@]}"'