find 명령을 사용하여 파일 이름을 바꾸는 방법

find 명령을 사용하여 파일 이름을 바꾸는 방법

명령을 사용하여 파일 이름을 바꾸려고 합니다 find.

파일a의 이름을 파일-10으로 바꾸려고 합니다.

이를 위해 먼저 아래 명령을 시도했습니다.

sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-10 '{}' ';'
mv: cannot stat `test-10': No such file or directory
sps@sps-Inspiron-N5110:~$

그런 다음 아래에서 시도했습니다.

sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-a test-10 '{}' ';'
mv: target `/home/sps/test-a' is not a directory
sps@sps-Inspiron-N5110:~$

이제는 find. 나는 동일한 파일 이름을 가진 많은 디렉토리를 갖게 될 것이고 하나의 명령으로 모든 것을 find변경하고 싶기 때문에 으로 이 작업을 수행하려고 합니다 . 누구든지 제안해주세요.test-atest-10

감사해요.

답변1

mvis 구문 mv <source> <target>이므로 실행되는 최종 명령은 find다음과 같아야 합니다.

mv test-a test-10 

따라서 첫 번째 추측은 다음과 같습니다.

find ~ -type f -name test-a -exec mv {} test-10 \;

그러나 이는 {}전체 경로로 확장되고 mv현재 디렉터리에서 계속 실행되므로 실패합니다. 결과적으로 모든 파일이 현재 디렉터리로 이동되고 덮어쓰게 됩니다. 이를 방지하려면 파일이 발견된 디렉터리에서 실행되도록 다음을 -execdir사용할 수 있습니다 .mv

find ~ -type f -name test-a -execdir mv {} test-10 \;

또는 파일 이름이 항상 동일하기 때문에:

find ~ -type f -name test-a -execdir mv test-a test-10 \;

관련 정보