因此,通过使用此站点上其他线程的一些信息,我设法获取一个脚本将文件复制到另一个目录,然后将 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
。