안녕하세요. 저는 다음과 같은 전송된 파일을 받는 입력이라는 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