현재 나의 작업은 여러 디렉토리에있는 많은 파일을 다른 식별자의 이름으로 바꾸고 있습니다. 각 디렉토리 내에서 B01, B02, B03, 등 등 img01.23495.png, img01.3596596.png, img02.2399495.png,리눅스에서 경로와 파일명의 특정 부분을 추출하는 방법
등의 파일 이름입니다 :
그래서 내가 좋아하는 몇 개의 디렉토리가 b01의 img01 이름을 다른 식별자로 변경해야합니다. 따라서 식별자는 디렉토리 이름과 파일 이름의 첫 번째 부분에 따라 다릅니다.
파이프 라인에 대한 나의 생각은 다음과 같다 : 모든 png 파일 이름을 가져오고, 어떤 폴더인지 추출하고, img ## 부분을 추출하고, 정보를 파일에 저장한다. 그래서 나는 :
B01 img01
B01 img02
B02 img01
은 ...
이 그래서 나는 새로운 식별자가을 수행 할 수있는 다음 파일에서 읽은 세 번째 열으로 무엇인지 afterwords 지정할 수 있습니다 유용 실제 이름 바꾸기.
현재 경로는 ./images/something/b01/img01.2342394.png입니다.
내가 그러나sed
부분에 붙어 나는 현재
find . | grep png | something sed | sort | uniq > indentifiers.txt
같은 것을 시도하고, 목록을 얻으려면. 또한 내가하려는 일을하는 제안은 환영 받는다.
'find. -name "* .png"| sed의/^. * \/\ ([^ \ /] * \) \/\ ([^ \ /] * \) \. png $/\ 1 \ 2/| sort -u'? 이것은 반복을 통해 불필요한 것 같습니다. 이 모든 작업을 한 번에 수행하는 실제 스크립트 또는 함수를 작성하는 데 관심이 있으십니까? – FrankieTheKneeMan
감사합니다. 나는 좋은 사이트가 정규 표현식에 대한 실험을하고, 정규 표현식을
find . -name "*.png" | sed 's/^.*\/\([^\/]*\)\/\(img[0-9][0-9]\)\([^\/]*\)\.png$/\1 \2/ | sort -u
으로 수정했다. 반복을 통해 무엇을 의미합니까? – vsector나는 목록을 두 번 읽는 것이 불필요한 것 같다. – FrankieTheKneeMan