명령을 사용하여 파일 이름을 바꾸려고 합니다 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-a
test-10
감사해요.
답변1
mv
is 구문 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 \;