디렉토리를 반복하면서 오래된 파일을 다른 위치로 옮기고 있습니다. 예를 들어. 오류 없이 이동 /a/b/c/d.txt
하고 싶은 /x/a/b/c/d.txt
경로에 있는 파일입니다 . 단일 명령으로 이것이 가능합니까? mv
작동하지 않으면 와 cp
의 조합이 rm
작동합니까?
- 한 번에 하나의 파일만 이동하면 됩니다.
- 대상 트리가 이미 존재하는 경우 오류가 발생하지 않아야 합니다.
- 대상 트리가 존재하지 않으면 생성됩니다.
이 게시물요건이 충족되지 않은 것 같습니다. 여러 줄의 코드를 사용하여 이 작업을 수행할 수도 있습니다. 그렇다면 미리 정의된 단일 라인 옵션을 갖는 것이 가능합니까? (프로그래밍 언어와 통합하고 싶습니다)
답변1
표준 명령만 사용해야 하는 경우 원하는 명령이 아닐 수도 있지만 rsync
도움이 될 수 있습니다.
$ mkdir a a/b a/b/c; echo foo >a/b/c/d.txt; tree a
a
└── b
└── c
└── d.txt
2 directories, 1 file
$ rsync --relative --remove-source-files a/b/c/d.txt x/
$ tree a x
a
└── b
└── c
x
└── a
└── b
└── c
└── d.txt
5 directories, 1 file
~에서수동:
--relative, -R
상대 경로를 사용하십시오. 이는 파일 이름의 마지막 부분뿐만 아니라 명령줄에 지정된 전체 경로 이름이 서버로 전송된다는 의미입니다. ...
그리고
--remove-source-files
이는 전송의 일부이고 수신 측에서 성공적으로 복사된 파일(즉, 디렉터리가 아닌)을 전송 측에서 삭제하도록 rsync에 지시합니다.