UNIX 디렉토리에 일부 파일이 있고 고유 번호로 시작하는 파일이 있습니다. 파일 이름에서 "-"가 뒤에 오는 고유 ID를 제거해야 하며 일반 파일이 필요합니다.
예: 32456113-report.pdf
데이터베이스의 필수 파일 이름: report.pdf
다양한 확장자(.pdf, .doc, .xls, .txt)를 가진 파일 이름이 있지만 앞에 같은 숫자가 있습니다.
저는 Winscp를 사용하여 데이터를 테스트하거나 보고 Oracle 애플리케이션에서 호스트 동시 프로그램으로 등록하여 셸 스크립트를 실행하고 있습니다.
답변1
당신이 원하는 것이 무엇인지 완전히 이해하지는 못하지만 간단한 bash 스크립트는 다음과 같을 것이라고 믿습니다.
for f in * ; do mv "$f" "$(echo "$f" | cut -d- -f2)"; done
에코가 마음에 들지 않으면 말도 안되는 소리는 그만하세요. Bash에서 문자열 규칙을 확인하는 데 도움을 드릴 수 있습니다.
답변2
for f in *; do
regular="${f#*-}"
echo "$f => $regular"
done
이 매개변수 확장( ${f#*-}
)은 변수 값의 시작 부분에서 하이픈으로 끝나는 가장 짧은 문자열을 제거합니다(참조:수동). 그래서:
$ f=32456113-summary-report.doc
$ echo "$f => ${f#*-}"
32456113-summary-report.doc => summary-report.doc
답변3
당신은 그것을 사용할 수 있습니다 perl-rename
.
perl-rename 's/[0-9]*-//' <files>
OS/배포판에 따라 이 유틸리티는 으로 호출될 수 있습니다 . 안전을 위해 rename
실제로 파일 이름을 바꾸기 전에 -n
플래그를 사용하여 perl-rename
시험 실행을 수행하세요.