파일을 작성 중이며 .sh
.sh의 상위 폴더에서 실행하고 수백 개의 파일이 포함된 /parent_folder/
하위 폴더를 생성하는 명령을 실행합니다 . 각 파일은 해당 파일로 시작하고 숫자, 다른 숫자, 그 다음에는 다른 많은 문자가 있습니다. 더 작은 예로 다음과 같은 파일 이름이 있습니다.My_Sub_Folder
Myfile_
_
Myfile_1_1_3423423_MY.my
Myfile_1_2_3242343_MY.my
Myfile_1_3_5645654_MY.my
Myfile_2_1_3242354_MY.my
Myfile_2_2_4534535_MY.my
Myfile_2_3_2365464_MY.my
Myfile_3_1_5464567_MY.my
Myfile_3_2_4364766_MY.my
Myfile_3_3_4564564_MY.my
그림에 표시된 것처럼 모든 파일은 Myfile_
숫자 증가 개수로 시작하고 _
또 다른 개수 증가 숫자로 시작하므로 제가 하고 싶은 작업은 내부에 하위 폴더를 만드는 것 입니다. 아래 위 예에서는 모든 파일이 저장될 My_sub_folder
이름이 지정된 세 개의 하위 폴더가 있습니다. Myfile_1
등으로 시작하세요. 이를 수행하는 방법에 대한 제안이 있습니까?Myfile_2
Myfile_3
Myfile_1
Myfile_1_*
이것은 내 스크립트입니다.
#!/bin/sh
myscript2.sh
DIR=$(pwd)
${DIR}/My_sub_folder
###I am not sure how I can then loop on the files and create the needed folders depending on their names as explained above then move them to the corresponding folder
답변1
이런 것들,
#!/bin/sh
#
for file in My_Sub_Folder/*.my # Files end with ".my" suffix
do
dir="${file%_*_*_*.my}" # Strip the pattern off the end of the filename
mkdir -p "$dir" # Create the directory unless it already exists
mv "$file" "$dir/" # Move the file to the directory
done
그런 다음 파일을 실행 가능하게 만들 수 있습니다(이 경우에는 이라고 합니다 thescript
).
chmod a+x thescript
그런 다음 필요한 만큼 여러 번 실행하세요.
./thescript
무슨 일이 일어나고 있는지 보려면 로 시작하는 추가 줄을 삽입하세요 echo
. 예를 들어,
echo "Creating directory: mkdir '$dir'"