脚本添加 md5sum 来重复文件名,但执行时仍然收到错误通知

脚本添加 md5sum 来重复文件名,但执行时仍然收到错误通知

因此,通过使用此站点上其他线程的一些信息,我设法获取一个脚本将文件复制到另一个目录,然后将 md5sum 添加到重复的文件名中。但是,我并不完全满意,因为当我执行脚本时,我仍然收到一些 BASH 通知,我可以通过一些帮助来理解/解决。首先这是脚本。

cp -r $dir1/* $dir2

cd $dir2  

fdupes -r $dir2 | while read i; do

bn="${i%.*}"
ext="${i##*.}"
md5=$(md5sum "$i" | awk '{ print $1 }')

mv -v "$i" "${bn}_${md5}.${ext}"

done 

脚本运行时我收到的消息是:

md5sum: : No such file or directory
mv: cannot stat ‘’: No such file or directory

正如我所说,该脚本似乎确实有效,但任何关于我为什么收到这些消息的想法都将受到赞赏,任何调整/改进脚本的建议也将不胜感激。谢谢

答案1

根据我的理解,我猜想命令有一个问题fdupes,它在末尾输出一个空行:

[PRD][]localhost:~ 12:17:09     
$ fdupes -r work/
work/sockperf-sockperf_v2/news          
work/sockperf-sockperf_v2/src/.dirstamp
work/sockperf-sockperf_v2/src/.deps/.dirstamp

[PRD][]localhost:~ 12:17:19

然后,在循环中处理时,最后一个元素为空,这会在md5sum文件不存在时产生错误:

$ md5sum ' ' 
md5sum: : no such file of directory 

然后脚本尝试移动这个空名称文件,这也会产生错误mv

相关内容