"-" 기호까지 파일 이름을 인식하고 동일한 이름의 폴더를 생성하는 스크립트는 모든 파일을 해당 폴더로 이동합니다.

"-" 기호까지 파일 이름을 인식하고 동일한 이름의 폴더를 생성하는 스크립트는 모든 파일을 해당 폴더로 이동합니다.

나는 이것을 가지고있다

/Folder1/108462-2.jpg
/Folder1/108462-3.jpg
/Folder1/BSR2333-1.jpg
/Folder1/BSR2333-2.jpg
/Folder1/DKS23108554-1.jpg
/Folder1/DKS23108554-2.jpg

나는 이것을 갖고 싶습니다 :

/108462/108462-2.jpg
/108462/108462-3.jpg
/BSR2333/BSR2333-1.jpg
/BSR2333/BSR2333-2.jpg
/DKS23108554/DKS23108554-1.jpg
/DKS23108554/DKS23108554-2.jpg

나는 이것을 보았다;

do if [[ -f "$file" ]]; then mkdir "${file:0:9}" mv "$file" "${file:0:9}"; fi; done 

그런데 별로 안 그러는데...

하지만 "-"까지 전체 이름을 사용하여 폴더를 만들고 해당 폴더에 파일을 넣는 방법은 무엇입니까? 미리 감사드립니다. Mac 터미널에 아주 새로운 기능입니다.

답변1

설명에 따라 /Folder1폴더의 파일 이름을 -파일 이름까지 변경하려고 합니다.

이것은 다음과 같은 원시적인 예입니다.의미있는 변수 이름읽을 수 있는 코드의 경우.

#! /bin/bash

pathname=/Folder1/108462-2.jpg
newfolder="$(dirname "$pathname")"
newfolder="${newfolder/-.*$//}"
filenamepartofpathname="$(basename $pathname)"
newpathname="$newfolder/$filenamepartofpathname"
echo "$newpathname"

쉘체크출력이 생성되지 않습니다.

$ shellcheck primitive-example.sh
(no output)
$ ./primitive-example.sh
/108462/108462-2.jpg

파일에 둘 이상이 있으면 -기본 예제를 조정해야 할 수도 있습니다.

"코드 골프"를 시도해 볼 수도 있습니다.https://codegolf.stackexchange.com/덜 원시적이지만 읽기 어렵게 만드는 데 도움을 받으려면

관련 정보