簡體   English   中英

如果復制文件,請避免沖突

[英]Avoid collision, if copying files

我試圖將所有子文件夾中的某個文件類型的所有文件復制到一個位置。 不幸的是,如果兩個文件具有來自兩個不同子文件夾的相同名稱,則可能會導致沖突。

我在用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM