如何检查重复文件,并在从其他来源复制文件时重命名文件(如果有)

如何检查重复文件,并在从其他来源复制文件时重命名文件(如果有)

这是 bash 中的一个脚本,它将文件从一个目录复制到另一个目录,但子目录中可能会有重复文件。因此,在复制时,它应该识别另一个文件是否具有相同的名称,如果是,则更改正在复制的文件的名称。我试过这个

for i in $1; do
    find $i -type f -name img*.jpg -exec cp {} $2 \;
    for j in $2; do
        find $j -type f -name $i | while read filename; do if test "$i"="$j"; then mv $i new_filename; fi done
    done
done 

但是我收到一条错误消息,说文件名不应包含斜杠,这有点奇怪...我是一个完全的初学者,如果您输入任何代码,请发表评论。谢谢。

答案1

$1应该是一个目录列表,因为它是 find 之后的第一个参数。好吗?
在第一个 find 中,你必须引用星号:-name 'img*.jpg'
然后你复制到目录 $2。因此,$2第二个 for 是一个目录,而且只有一个。
如果您的目的是查看每个文件在中$2,使用for j in $2/*然后,find $2 -type f -name $i | while...
顺便说一句,如果名称可能包含空格,请在参数周围使用双引号。

相关内容