파일 이름에서 숫자를 추출하는 방법

파일 이름에서 숫자를 추출하는 방법

다른 디렉토리의 파일 이름에서 번호만 얻는 방법은 무엇입니까? sed awk또는 bash? 만 사용하세요 . 길이에는 제한이 없지만 형식은 항상 ABC1234라고 가정해 보겠습니다.

내가 시도한 파일 이름이 있는 경우 ABC1311.crs에만 원합니다 1311.

number=`awk -F '[]' '{print $2}' $data/ABC123.crs

답변1

이것은 이상한 요구 사항처럼 보일 수 있지만 임의의 파일 이름에서 숫자를 추출하려면 매개 변수 확장을 사용하여 파일 이름에서 숫자가 아닌 모든 것을 제거할 수 있습니다.

for f in *
do
  printf '%s\n' "${f//[![:digit:]]/}"
done

답변2

나는 다음을 사용할 것이다 grep:

grep -Eo '[0-9]+' file.txt

답변3

다음을 사용하여 숫자를 얻을 수 있습니다.

echo * | grep -o '[[:digit:]]*'

원하시면 echo *로 대체하실 수 있습니다.ls

그냥 사용하고 싶다면 awk다음을 수행할 수 있습니다.

\ls | awk 'match($0, /[[:digit:]]+/) {print substr($0, RSTART, RLENGTH)}'

\ls디렉토리의 모든 파일을 나열하지만 awk첫 번째 숫자 세트만 인쇄됩니다. 이는 파일에 여러 숫자 문자열이 포함된 경우에만 출력됩니다(예 2043x924_fjnndkk.jpg: ) 2043.

\ls귀하의 ls별칭이 어떤 것에 대한 것이라면 그것을 사용하십시오. 그렇지 않으면 일반 별칭으로 ls충분합니다. 내 경우에는 별칭 ls( ls -s및 기타 옵션) 을 사용하여 이 명령을 방해하는 치수가 항상 인쇄됩니다.

관련 정보