확장자 없이 파일 이름을 가져오고 파일 이름에서 패턴을 연결합니다.

확장자 없이 파일 이름을 가져오고 파일 이름에서 패턴을 연결합니다.

내 사용자 디렉토리에 다음 Excel 파일이 있습니다.

430_XFRtoDML.xlsx
431_XFRtoDML.xlsx
440_XFRtoDML.xlsx
450_XFRtoDML.xlsx
451_XFRtoDML.xlsx
465_XFRtoDML.xlsx
500_XFRtoDML.xlsx

자취:/home/user

bit_list.txt 아래에 언급된 텍스트 파일을 생성하는 스크립트를 작성하고 싶습니다 . :5. 파일에서 xlsx 확장자를 제거한 다음 처음 3개의 숫자를 제거 해야 합니다 . 예를 들어430_XFRtoDML:5. 430

filenames=`ls *.xlsx`
for eachfile in $filenames
do
   echo $eachfile
done

예상 출력:

$ cat bit_list.txt
430_XFRtoDML:5. 430
431_XFRtoDML:5. 431
440_XFRtoDML:5. 440
450_XFRtoDML:5. 450
451_XFRtoDML:5. 451
465_XFRtoDML:5. 465
500_XFRtoDML:5. 500

답변1

  1. 파싱되지 않음ls이지만 *.xlsxfor 루프에서 직접 사용됩니다.
  2. 껍질을 사용하세요매개변수 대체가능성.
  3. printf대신 사용echo.
for file in *.xlsx; do
    name="${file%.*}"
    num="${file:0:3}"
    printf '%s:5. %d\n' "$name" "$num"
done > bit_list.txt

관련 정보