mv: 'path1/path2/filename1'과 '/home/user1/dir1/path1/path2/filename1'은 동일한 파일입니다.

mv: 'path1/path2/filename1'과 '/home/user1/dir1/path1/path2/filename1'은 동일한 파일입니다.

명령을 사용한 후:

find path1/ -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 {} \;

파일이 동일하다는 오류가 발생합니다. 명령이 성공적으로 완료되었습니다. 검색이 시작되는 상위 디렉터리는 다음과 같습니다. path1/그런 다음 대상 디렉터리로 파일을 이동하려는 전체 절대 경로를 입력합니다. 왜 이런 일이 발생합니까?

답변1

mv, 특정 파일을 대상으로 이동하면 파일 자체에 다시 기록되므로 특정 파일을 이동할 필요가 없습니다.

시도해봐도 같은 결과가 나올 것이다

mv file file

이름이 file.

에 관해서는때로는 다음과 같이 진행됩니다.

당신은 find길을 달리고 있습니다 path1. 나는 이것이 path1절대 경로와 동일하다고 가정합니다 /home/user1/dir1/path1/path2.

파일 이름이 사용 중인 패턴과 일치하는 경우 (이러한 파일은 이전 명령 /home/user1/dir1/path1/path2호출에 의해 전달되었거나find동일한 find디렉토리 순회 순서는 )이므로 (si)의 하위 디렉토리를 통해 찾을 수 있습니다 find. 파일을 에서 로 이동하는 명령을 실행하라는 메시지가 표시됩니다. 이것이 메시지를 촉발하는 원인입니다(실제 "오류"라고 부르기는 망설여집니다).findpath2path1findmvpath2path2

도착하다피하다path2으로 조사하려면 find다음을 수행할 수 있습니다.

find path1 \( -type d -path 'path1/path2' -prune \) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 {} +

발견된 내용이 디렉토리( -type d)이고 경로명인 경우 path1/path2디렉토리 순회 시 생성된 디렉토리 검색 트리에서 제거한다. 그렇지 않으면 이전과 같이 계속하십시오(거의 한 번에 가능한 많은 경로 이름을 얻기 위해 find마지막 경로를 변경했습니다 ) .\;+mv

관련 정보