简体   繁体   中英

How to automatically remove the file extension in a file name

I am trying to make a script in bash that requires the removal of the the file extension from a file name, like the following

original:   something.zip
removed version: something

And I was thinking I could use cut for this, but I am worried that a situation could arise where there might be a file name that has more than one period, etc, something similar to the following

something.v2.zip

having said that, I was wondering if anyone had any recommendations as to what I could do to just remove the last period and the text after it from a line of text/filename? any help would be appreciated, thanks!

 f=file.zip
 echo "${f%.zip}"

 file

The '%' is a parameter modifier, it means, delete from the right side of the value of the variable whatever is after the '%' char, in this case, the string .zip . You can make this more general to remove any trailing extension, by using a wild card like

 echo "${f%.*}"

 file

If you want to remove the from the last period to the end, try this:

$ f=some.thing.zip
$ echo "${f%.*}"
some.thing

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM