Bash 스크립트를 사용하여 grep으로 파일을 이동하고 이름을 바꾸는 방법

Bash 스크립트를 사용하여 grep으로 파일을 이동하고 이름을 바꾸는 방법

안녕하세요. 저는 다음과 같은 전송된 파일을 받는 입력이라는 FTP 폴더가 있습니다.

"Guide to Iceland _ Chen-ping Wang itinerary T-987654987.pdf"
"Guide to Iceland _ T-123654875 Chen-ping Wang itinerary.pdf"

기본적으로 파일 설명은 다양할 수 있지만 항상 "T-"와 일부 숫자가 포함됩니다.

파일을 ../Output 폴더에 복사하고 "T-"와 숫자가 먼저 나타나고 나머지 파일 이름이 나타나도록 파일 이름을 바꾸는 bash 스크립트를 만들어야 합니다. 예:"T-123654875 - Guide to Iceland _ Chen-ping Wang itinerary.pdf"

정확한 이름을 얻기 위해 Grep을 사용할 것입니다. 검색 (.+)(T-\d+)하여 다음으로 바꾸기$2 - $1

하지만 제대로 작동하게 할 수는 없습니다.

답변1

grep단독으로 교체하는 것은 나에게 사용 가능한 조합처럼 보이지 않습니다. 이것에 대해 어떻게 생각하세요 sed?

$ ls *pdf
Guide to Iceland _ Chen-ping Wang itinerary T-987654987.pdf
Guide to Iceland _ T-123654875 Chen-ping Wang itinerary.pdf

그런 다음 약간의 for 루프가 있습니다 bash.

$ for i in *pdf; do mv "$i" "$( echo $i |  sed -r  's/^(.*)(T-[0-9]{9})(.+)$/\2 - \1\3/'  )"; done

이는 현재 디렉토리의 모든 PDF를 반복하고, 이름을 저장하고 $i, sed를 통해 내용을 에코합니다(그리고 해당 출력을 대상으로 사용 mv). sed파일 이름을 세 부분으로 나누고 다시 정렬합니다. 테스트를 mv위해 교체하는 것이 좋습니다 echo mv:)

이는 우리에게 다음을 제공합니다.

$ ls *pdf
T-123654875 - Guide to Iceland _  Chen-ping Wang itinerary.pdf
T-987654987 - Guide to Iceland _ Chen-ping Wang itinerary .pdf

관련 정보