동일한 메시지 파일을 계속 가져오려면 찾기를 사용하세요.

동일한 메시지 파일을 계속 가져오려면 찾기를 사용하세요.

내가 이것을 입력할 때마다:

find . -type f -name 'diag*' -mtime +30 -exec mv {} temp_diag \;

SunOS에서는 항상 이 메시지를 받습니다.

mv: ./temp_diag/diagnostic.log.68.gz and temp_diag/diagnostic.log.68.gz are identical
mv: ./temp_diag/diagnostic.log.37.gz and temp_diag/diagnostic.log.37.gz are identical
mv: ./temp_diag/diagnostic.log.18.gz and temp_diag/diagnostic.log.18.gz are identical

내가 사용하고 있는 명령은 잘 작동하지만 메시지의 의미에만 관심이 있습니다.

답변1

이 명령을 사용하면 현재 경로에서 아래로 이동합니다. 그래서 당신은 다음과 같은 것을 가지고 있습니다 :

dir1
dir1/temp_diag
dir1/temp_diag/file1

내부에서 명령을 실행 dir1하고 dir1/temp_diag를 살펴보고 실행합니다.

mv ./temp_diag/file1 temp_diag/file1

본질적으로 명령에 파일을 자체적으로 이동하라고 지시하는 것입니다.

고쳐 쓰다: 파일이 있는 하위 디렉터리가 없으면 maxlength 1을 찾는 옵션을 추가할 수 있습니다. 그래서:

find . -type f -name 'diag*' -maxdepth 1 -mtime +30 -exec mv {} temp_diag \;

또는 하위 디렉터리가 있지만 temp_diag를 포함하지 않으려는 경우 다음을 수행하세요.

find . -path ./temp_diag -prune -o -print -type f -name 'diag*' -mtime +30 -exec mv {} temp_diag\;

답변2

귀하의 find명령은 temp_diag 디렉토리로 이동하여 파일을 찾은 다음 mv파일을 자체적으로 복사하려고 시도하는 것입니다.

관련 정보