Bash에서 하나의 명령을 사용하여 파일 찾기 및 이름 바꾸기

Bash에서 하나의 명령을 사용하여 파일 찾기 및 이름 바꾸기

RHEL 7 서버에서 파일을 찾고 이름을 바꾸는 방법은 무엇입니까? 명령어 하나로 가능할까요?

예를 들어 다음과 같이 할 수 있습니다.

find . -name filename 

그런 cd다음 디렉토리로 이동한 mv filename.conf filename2.conf다음 한 줄로 모두 수행하고 싶습니다.

답변1

이 플래그를 사용할 수 있습니다 execdir.

  find . -type f -name <original_file_name> -execdir mv {} <new_file_name> \;

답변2

file.conf이름 을 로 바꾸려면 다음 옵션을 file2.conf사용하십시오 .find-exec

find . -name "*.conf" -type f -exec sh -c 'mv "$1" "${1%.conf}2.conf"' sh {} \;

각 파일 이름은 명령 실행을 위한 옵션으로 시작되는 새 셸 프로세스에 {}인수로 전달됩니다 .$1-execmv

  • ${1%.conf}셸 매개변수 확장이며 .conf파일 이름에서 접미사를 제거합니다.
  • 2.conf파일 이름에 새 접미사 추가

명령을 실행하기 전에 테스트하려면 echo다음과 같이 추가하십시오.

find . -name "*.conf" -type f -exec sh -c 'echo mv "$1" "${1%.conf}2.conf"' sh {} \;

관련 정보