파일이 여러 개 있고 파일 이름 시작 부분에 문자를 추가하고, 확장자를 추가하고, 단일 명령을 사용하여 파일 이름 중앙에 있는 단어를 제거하고 싶습니다. 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