我有以下代码尝试查找与某些模式匹配的所有文件并将它们复制到新目录,如果文件已存在则添加后缀。这是因为重复的文件名出现在原始列表中 - 因为它们位于不同的目录中。
它按预期工作,除了包含作为分隔符spaces
的文件名。for in loop
这段代码来自stackoverflow的各个部分,我已经使用过,但我并不完全理解。
我尝试了引用文件名的各种组合,在某种程度上我只复制了带空格的文件。
有人可以建议我如何解决这个问题
patterns=( "wom*.gif" "StarB*.gif" "logos*.gif" )
for pattern in "${patterns[@]}"
do
for fname in $(find $source -name $pattern);
do
echo Path-and-Filename: $fname
filename=$(basename "$fname")
extension=${filename##*.}
filename=${filename%.*}
echo Just-Filename: $filename.$extension
suffix=""
count=0
while [ -f $dest$filename$suffix.$extension ]
do
count=$(($count+1))
suffix="("$count")"
done
cp -v -p "$fname" $dest"$filename"$suffix.$extension >>$dest"CopyImageFiles-"$(date +"%Y-%m-%d").log 2>>$dest"CopyImageFiles-"$(date +"%Y-%m-%d").log
done
done