특정 위치의 Linux 일괄 이름 바꾸기 파일

특정 위치의 Linux 일괄 이름 바꾸기 파일

디렉토리의 특정 위치에 있는 모든 파일의 이름을 바꾸고 싶습니다.

원본 파일 샘플 이름:

neif11_fastcredit_20190629101333.txt
neif11_fastcredit_20190629101334.txt
neif11_fastcredit_20190629101335.txt
neif11_fastcredit_20190629101336.txt
neif11_fastcredit_20190629101337.txt

이름을 다음으로 바꾸고 싶습니다.

neif11_fastcredit_20191129061333.txt
neif11_fastcredit_20191129061334.txt
neif11_fastcredit_20191129061335.txt
neif11_fastcredit_20191129061336.txt
neif11_fastcredit_20191129061337.txt

파일 이름 이해:

neif11_fastcredit_2019그대로 두어야 합니다. 다음 부분은 월과 일입니다.[MMDD]06291129오늘 날짜 로 업데이트하고 싶은데 마지막 부분은으으으음또한 변함없이 유지됩니다.

저는 Linux를 처음 사용하기 때문에 도움이 필요합니다.

답변1

사용 가능한 것이 없으면 rename다음 (Bash) 루프를 사용해 볼 수 있습니다 sed.

user@host$ for FILE in *.txt; do NEWNAME=$(sed 's/_20190629/_20191129/' <<< "$FILE"); mv "$FILE" "$NEWNAME"; done

이를 위해서는 Bash가 필요합니다. 다른 쉘이 있는 경우 다음과 같은 방법을 사용해야 합니다.

user@host$ for FILE in *.txt; do NEWNAME=$(echo "$FILE" | sed 's/_20190629/_20191129/'); mv "$FILE" "$NEWNAME"; done

또한 이는 파일 이름이 "매우 잘 작동"한다고 가정하므로 특수 문자(예제의 일부가 아님)로 인해 이러한 오류가 발생할 수 있습니다.

답변2

그리고래리 월스rename( rename(Debian, Ubuntu) 또는 prename(RHEL/CentOS)):

rename -n s/_20190629/_20191129/ neif11_fastcredit_20190629*.txt

-n단지 "모의 실행" 스위치일 뿐입니다. -v실제 사용 중에 제거하거나 교체하십시오.

답변3

사용 mv및 반복:

for f in neif11_fastcredit_20190629*.txt; do
  mv "$f" "neif11_fastcredit_201911${f##*_201906}"
done

이 부분은 각 파일 이름에서 ${f##*_201906}일치하는 가장 긴 접두사를 제거 하고 해당 부분을 새 파일 이름의 접미사로 유지합니다.neif11_fastcredit_201906DDHHMMSS.txt

관련 정보