다른 디렉토리의 파일 이름에서 번호만 얻는 방법은 무엇입니까? 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
및 기타 옵션) 을 사용하여 이 명령을 방해하는 치수가 항상 인쇄됩니다.