mv의 오류를 무시하는 방법: 'XXXXXX를 자체 하위 디렉터리로 이동할 수 없습니다.

mv의 오류를 무시하는 방법: 'XXXXXX를 자체 하위 디렉터리로 이동할 수 없습니다.

RHEL 7.6 서버에서 다음 폴더를 만듭니다.

# mkdir -p /var/data/data-logs_temp

/var/data/두 번째 부분은 모든 것을 다음으로 옮기는 것입니다 /var/data/data-logs_temp.

# mv /var/data/* /var/data/data-logs_temp

그러나 명령에서 얻은 출력은 다음 mv과 같습니다.

mv: cannot move ‘/var/data/data-logs_temp’ to a sub directory of itself, ‘/var/data/data-logs_temp/data-logs_temp’

mv이에 관해서는 명령이 정확합니다..

mv하지만 명령의 종료 코드가 필요하므로 이를 무시하라고 말할 수 있습니까 ?mv0

아니면 자체 하위 디렉터리 이동을 무시하는 또 다른 옵션이 있을까요?

답변1

bash의 "확장 glob" 구문을 사용하여 이동할 파일 목록에서 data-logs_temp 하위 디렉터리를 제외할 수 있습니다.

shopt -s extglob
mv /var/data/!(data-logs_temp) /var/data/data-logs_temp

바라보다그렉의 위키그리고이 문제glob 확장에 대한 추가 정보.

답변2

더 단순한 Unix/Linux 세계에서는 확장 옵션을 호출하지 않고 다음을 수행합니다.

(a) 동일한 파일 시스템에 있고 귀하가 쓸 수 있고 하위 트리에는 없는 mkdir data-logs_temp귀하가 소유한 모든 디렉토리 ( 쓰기 액세스 권한이 있는 경우 허용됨)./var/data/var/data/var

(b) cd /var/datamv * /wherever/data-logs_temp, 모든 와일드카드 이름을 확장하기 위해 전체 디렉토리를 사용하지 마십시오. 이는 데이터를 복사하지 않고 링크만 생성하며 디렉터리를 자체적으로 복사하려고 시도하지 않습니다.

(씨) mv /wherever/data-logs_temp /var/data. 이는 하나의 링크만 이동하고 트리 구조를 유지합니다.

관련 정보