단일 명령을 사용하여 Linux에서 여러 파일의 파일 이름을 한 번에 변경

단일 명령을 사용하여 Linux에서 여러 파일의 파일 이름을 한 번에 변경

파일이 여러 개 있고 파일 이름 시작 부분에 문자를 추가하고, 확장자를 추가하고, 단일 명령을 사용하여 파일 이름 중앙에 있는 단어를 제거하고 싶습니다. bash를 사용하여 실행하고 있습니다. 이것은 내 파일입니다:

DATA_20210301_INPUT_CHECK 
DATA_20210302_INPUT_CHECK
DATA_20210303_INPUT_CHECK
DATA_20210304_INPUT_CHECK

한 번의 작업으로 이름을 다음과 같이 바꾸고 싶습니다.

1_DATA_20210301_CHECK.DAT
1_DATA_20210302_CHECK.DAT
1_DATA_20210303_CHECK.DAT
1_DATA_20210304_CHECK.DAT

단일 명령을 사용하여 모든 파일 이름을 한 번에 변경하는 방법은 무엇입니까? 내가 아는 한, 이 모든 루프는 하나씩 수행됩니다.

 for f in *; do mv "$f" "$f.DAT"; done
 for i in *; do mv "$i" 1_"$i"; done
 for i in *; do mv "${i}" "${i//\_INPUT/}"; done

도와주세요, 감사합니다!

답변1

rename명령으로 그렇게 할 수 있습니다. 나는 GNU와 Perl 정규식이라는 두 가지 버전을 알고 있습니다.

암소 비슷한 일종의 영양:

rename DATA 1_DATA DATA*

정규식:

rename s/^/1_/ DATA*

실행하여 rename --help현재 사용 중인 버전을 알아보세요.

답변2

이것은 실제로 두 개의 명령이지만 원하는 출력을 제공합니다.

rename 'DATA' '1_DATA' DATA_2021030*_INPUT_CHECK && rename 'CHECK' 'CHECK.DAT' *DATA_2021030*_INPUT_CHECK

산출:

1_DATA_20210301_INPUT_CHECK.DAT
1_DATA_20210302_INPUT_CHECK.DAT
1_DATA_20210303_INPUT_CHECK.DAT
1_DATA_20210304_INPUT_CHECK.DAT

관련 정보