gpt4 book ai didi

linux - 避免碰撞,如果复制文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:36 25 4
gpt4 key购买 nike

我试图将某种文件类型的所有文件从所有子文件夹复制到一个地方。不幸的是,如果来自两个不同子文件夹的两个文件具有相同的名称,这可能会导致冲突。

我在用

find ./ -name '*.jpg' -exec mv -u '{}' . \; 

如何调整它以自动重命名文件(例如附加“_1”)以避免冲突。或者更好:事先检查文件是否相同(例如相同大小)。如果是,请忽略(覆盖也可以)。如果否,重命名以避免冲突。

建议将不胜感激。谢谢!

最佳答案

您可以在移动每个单独的文件之前进行检查。在这里,我使用了 cksum 进行比较,它返回文件大小和一个简单的校验和。

find ./ -name '*.jpg' -print0 |
while read -d '' -r path; do
file=$(basename "$path")
if [[ -e $file ]]; then
if [[ $(cksum "$file" | awk '{print $1 $2}') = $(cksum "$path" | awk '{print $1 $2}') ]]; then
continue
fi
read -n 1 -p "File '$file' would be overwritten by '$path', continue? (y/N) " -r prompt </dev/tty
if [[ $prompt != [Yy] ]]; then
continue
fi
fi
mv -f -v "$path" "$file"
done

关于linux - 避免碰撞,如果复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com