【发布时间】:2013-03-07 11:26:46
【问题描述】:
我有以下代码,它尝试查找与特定模式匹配的所有文件并将它们复制到新目录,如果文件已存在则添加后缀。这是因为重复的文件名出现在原始列表中 - 因为它们位于不同的目录中。
它按预期工作,除了包含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
【问题讨论】: