`mv`를 사용하여 비어 있지 않은 디렉토리를 강제로 덮어 쓰는 방법


17

파일 / 디렉토리 그룹을 대상 디렉토리의 파일 / 디렉토리와 이름이 충돌하는 다른 디렉토리로 이동 (복사하는 것이 아니라)하려고합니다. 내 주된 목표는 파일을 옮기는 것이므로 비어 있지 않은 디렉토리를 덮어 쓸 수 있습니다.

나는 현재 사용하고 mv ... destination있지만 때로는

mv :`target '을 / destination / target'으로 옮길 수 없습니다 : 디렉토리가 비어 있지 않습니다

나는 mv -f ... destination성공 rsync하지 못했지만 파일을 원래 위치에서 벗어나고 싶기 때문에 적절하지 않은 것 같습니다.

보너스로, 이름을 바꿔서 덮어 쓰려는 파일을 보존하는 좋은 솔루션이 있습니까?


mv 명령을 시도 할 때 어떤 오류가 발생합니까?
suspectus

당신 rsync은 그것이 당신이 원하는 것이 아니라고 분명히 말합니다 . 왜 이것을 태그로 rsync했습니까?
DopeGhoti

@DopeGhoti 나는 그것이 적절하지 않다고 말했지만, 그렇지 않으면 기꺼이 보일 것입니다.
user1227038

@suspectus 업데이트 된 질문입니다.
user1227038

1
당신이 사용하는 사용하는 경우 mv --backup=numbered나에 대한 다른 옵션 중 하나 --backup스위치를 다음 mv병합을 완료하고 파일을 덮어 의도 보존합니다
에는 bsd

답변:


19

당신이 사용하는 경우 mv --backup=numbered
합니다 (대한 다른 옵션 또는 하나의 --backup스위치),
다음 mv병합을 완료하고 파일을 덮어 의도 보존됩니다.


벙어리 답변- .~1~폴더로 드라이브를 오염시킵니다
툴킷

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
대신에이 스크립트의 하나 직접 실행할 수 cp에 의해 다음 mv명령.
reza.safiyat

0

당신이 사용할 수있는 mc화면 내부 (자정 사령관)과와 함께 폴더 InsF6

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.