Làm cách nào để ghi đè các thư mục không trống bằng cách sử dụng `mv`


17

Tôi muốn chuyển (không chỉ sao chép) một nhóm các tệp / thư mục sang một thư mục khác, một số trong đó có xung đột tên với các tệp / thư mục trong thư mục đích. Mục tiêu chính của tôi là di chuyển các tập tin, vì vậy tôi có thể chịu đựng được thư mục không trống bị ghi đè.

Tôi hiện đang sử dụng mv ... destination, thỉnh thoảng tôi nhận được

mv: không thể di chuyển `target 'đến / Destination / target': Thư mục không trống

Tôi đã thử mv -f ... destinationnhưng không thành công và vì tôi muốn các tệp bị mất khỏi vị trí ban đầu của chúng, rsyncdường như không phù hợp.

Như một phần thưởng, có một giải pháp tốt để bảo quản các tệp dự định được ghi đè bằng cách nào đó có thể bằng cách đổi tên?


Và bạn gặp lỗi gì khi thử lệnh mv?
suspectus

Bạn nói rõ ràng đó rsynckhông phải là điều bạn muốn; Tại sao bạn gắn thẻ này với rsync?
DopeGhoti

@DopeGhoti Tôi nói nó không có vẻ phù hợp, nhưng tôi sẵn sàng để được hiển thị khác.
dùng1227038

@suspectus Câu hỏi cập nhật.
dùng1227038

1
nếu bạn sử dụng mv --backup=numberedhoặc sử dụng một trong các tùy chọn khác cho công --backuptắc, sau đó mvsẽ hoàn tất việc hợp nhất và bảo toàn các tệp dự định được ghi đè
bsd

Câu trả lời:


19

Nếu bạn sử dụng mv --backup=numbered
(hoặc một trong các tùy chọn khác cho công --backuptắc),
thì mvsẽ hoàn thành việc hợp nhất và bảo toàn các tệp dự định được ghi đè.


câu trả lời ngu ngốc - điều này sẽ làm ô nhiễm ổ đĩa của bạn với .~1~các thư mục
Bộ công cụ

0
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
SRC=/path/to/source
DST=/path/to/destination

for item in $SRC/*; do
    if [[ -f "$DST/$(basename "$item")" ]]; then
        newitem=$(basename $item)_old
        while [[ -f "$DST/$newitem" ]]; do
            newitem=${newitem}_old
        done
        mv "$DST/$(basename $item)" "$DST/$newitem"
    fi
    mv "$item" "$DST/$(basename $item)"
done

1
Thay vì tập lệnh này, người ta có thể chạy trực tiếp lệnh cptiếp theo mv.
reza.safiyat

0

Bạn có thể sử dụng mc(Midnight Commander) bên trong màn hình và các thư mục có InsF6

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.