파일 이름이 .xml
로 끝나는 지 확인하는 방법은 무엇입니까 .any-string
? 예를 들어 .previous, .backup, bck12 등...
.any-string
다음으로 끝나거나 그 뒤에 아무것도 포함하지 않는 XML 파일 이름을 인쇄해야 합니다..xml
grep, awk, sed, perl 또는 기타 아이디어를 사용하여 이를 어떻게 확인할 수 있습니까? 그것은 마치
file=machine_configuration.xml
file=machine_configuration.xml.previos
file=machine_configuration.xml.backup
echo $file | .....
예:
machine_configuration.xml
: 예machine_configuration.xml.OLD
: 아니요- `machine_configuration.xml-HOLD: 아니요
machine_configuration.xml10
: 아니요machine_configuration.xml@hold
: 아니요machine_configuration.xml_need_to_verifi_this
: 아니요
답변1
앵커( )를 끝내려면 정규식을 사용하십시오. $
예:
echo "$file" | grep '\.xml$'
"xml"로 끝나는 모든 파일을 찾으려면 다음과 같은 명령을 사용하는 것이 좋습니다 find
.
find . -name '*.xml'
현재 디렉터리의 모든 xml 파일이 반복적으로 나열됩니다.
답변2
내가 올바르게 이해했다면 파일 이름이 .xml
.
case $file in
*.xml) echo "$file";;
esac
파일 이름이 일치하지 않는 경우 조치를 취하고 싶다면 다음을 수행하세요.
case $file in
*.xml) echo "matched $file";;
*) echo "skipping $file";;
esac
답변3
변수에 파일 이름이 이미 있는 경우 좋은 접근 방식은 다음과 같습니다.매개변수 확장
$ echo $file
text.xmllsls
$ echo ${file%.xml*}.xml
text.xml
그중 %.xml*
마지막 항목 .xml
과 그 이후 항목이 모두 삭제됩니다. 그래서 .xml도 다시 에코했습니다.
또는 테스트도 수행하십시오.
$ file=test.xmlslsls
$ file2=${file%.xml*}.xml
$ if [ $file = $file2 ]; then echo $file; fi
$
$
$ file="test.xml"
$ file2=${file%.xml*}.xml
$ if [ $file = $file2 ]; then echo $file; fi
test.xml
아니면 라인에서
$ if [ $file = ${file%.xml*}.xml ]; then echo $file; fi
답변4
가장 쉬운 방법은...
echo file=machine_configuration.xml | cut -d '.' -f 1