如何在查找FOR循环时从名称中删除扩展名
这个问题在这里已经有了答案:
要删除扩展名:
filename_without_ext="${file%.*}"
这意味着,删除以点开头的最短后缀。
然后检查存档是否存在类似的东西
if [ -e "$dir/$filename_without_ext.tar.bz2" ]; then
我并不完全知道它如何实现更安全的删除,但是这个东西会做到这一点,如果你想删除扩展,并搜索tar.bz2,但要注意,如果文件名是text.something.txt将结果text.tar操作.bz2
FILE=test.txt; echo ${FILE/.*/.tar.bz2}
还有其他方法可以使用变量替换来达到相同的结果:
${var%pattern}
从右侧删除文本匹配模式后,使用var的值。 删除最短的匹配件。 ${var%%pattern}
与%pattern相同,但删除最长的匹配部分。 ${var/pat/repl}
使用var的值,第一次匹配pat与repl重新放置。 ${var/pat}
使用var的值,第一次匹配pat被删除。 如果你想在rm
之前做一些检查,
alias rm='/usr/bin/rm -rfv'
链接地址: http://www.djcxy.com/p/57101.html
上一篇: How to remove extensions from name when looking in a FOR loop