명령을 사용한 후:
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
. 파일을 에서 로 이동하는 명령을 실행하라는 메시지가 표시됩니다. 이것이 메시지를 촉발하는 원인입니다(실제 "오류"라고 부르기는 망설여집니다).find
path2
path1
find
mv
path2
path2
도착하다피하다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