답변:
와 함께하지 않습니다 mv
.
mv
(이름에도 불구하고) 핵심 기능은 객체의 이름 을 바꾸는 것입니다. UNIX가 보장하는 것 중 하나는 이름 바꾸기가 원 자성이라는 것입니다. 부분적으로 완료된 이름 바꾸기를 볼 수는 없습니다. 당신이 (파일을 변경하려는 경우 보장은 매우 유용 할 수 있습니다 /etc/passwd
다른 프로그램이보고 될 수 있음을 예를 들어,), 당신은 그 파일의 이전 또는 새로운 버전 중 하나를보고 싶어 하고 다른 가능성을 . 그러나 당신이 묘사하는 "재귀 적 이름 바꾸기"는 그 보증을 깨뜨릴 것입니다-당신은 중간에 그것을 멈출 수 있고 반쯤 움직 인 나무와 아마도 엉망이 될 것입니다. 그래서 그것은 철학에 실제로 맞지 않습니다. 의 mv
. 왜 mv -r
존재하지 않는지에 대한 나의 추측 입니다.
( mv
그런 철학을 다른 작은 방법으로 깨뜨리지 마십시오 . 예를 들어, 파일 시스템 간에 파일을 이동할 때 mv
실제로 cp
뒤 따릅니다 rm
.)
충분한 철학. 동일한 파일 시스템 에서 한 장소에서 다른 장소로 트리를 재귀 적으로 이동 ( "드래그 앤 드롭") 하려면 다음과 같은 효율성과 속도를 얻을 수 있습니다 mv
(예 :).
cp -al source/* dest/ && rm -r source/*
"복사하는 대신 하드 링크 만들기" -l
를 cp
의미 하는 플래그 -이전 파일 이름과 동일한 파일 데이터를 가리키는 새 파일 이름을 효과적으로 만듭니다. 이것은 하드 링크를 지원하는 파일 시스템에서만 작동하므로 기본 UNIX 파일 시스템은 훌륭하지만 FAT에서는 작동하지 않습니다.
&&
수단 "앞의 명령이 성공하는 경우에만 다음 명령을 실행합니다." 원하는 경우 두 명령을 한 번에 하나씩 실행할 수 있습니다.
아마도 이것에 대한 정답을 바꾸고 싶을 것입니다.
https://github.com/iaindooley/pickdrop
예:
내가 있다고 말해 :
test/
test/index.php
test/images/
test/images/a.jpg
test/images/thing.png
이 것들을 / site로 옮기고 싶습니다
그래서 다음과 같이 보입니다 :
site/
site/public/
site/public/index.php
site/public/a.jpg
site/public/thing.png
나는 갈 수있다:
cd images &&
pick a.jpg thing.png
cd .. &&
pick index.php &&
cd .. &&
mkdir site &&
mkdir site/public &&
cd site/public &&
drop
이것은 말 그대로 잘라내어 붙여 넣습니다.