ファイル名.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