디렉토리의 특정 위치에 있는 모든 파일의 이름을 바꾸고 싶습니다.
원본 파일 샘플 이름:
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]0629
1129
오늘 날짜 로 업데이트하고 싶은데 마지막 부분은으으으음또한 변함없이 유지됩니다.
저는 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_201906
DDHHMMSS.txt