从文件名中删除开头4个字母和结尾4个字母

时间:2018-09-24 09:08:16

标签: linux bash shell command

我想要一个命令,该命令可以从文件名中删除开头的4个字母和结尾的4个字母。例如:如果文件名是: 形式1234.tgz 我想从文件名中获取数字1234。有人可以建议在Linux上的命令提示符下完成此操作的简单方法吗?

4 个答案:

答案 0 :(得分:1)

使用cursor.rawQuery("select column from Table where column_person_Name='John' OR column_person_Name='Bob'); 可以轻松删除前四个字符。不幸的是,它没有内置的方法可以从字符串末尾删除字符,但是您始终可以使用cut apply rev然后再cut将其反转。

rev

答案 1 :(得分:0)

使用参数替换。

span:before {position: absolute; width: 100%; height: 100%; content: '***'}

filename=form1234.tgz short=${filename#????} short=${short%????} 从左侧删除,#从右侧删除。

答案 2 :(得分:0)

您实际上可以使用很多选项...

对于这种事情,最好匹配您想要的内容而不是删除不需要的内容:可能会出现输入错误,或者已经存在被截断的文件...

例如,如果您想摆脱扩展名,可以使用parameter expansion,几乎每个shell都已支持它:

printf "%s" "${file%.*}"

如果只需要数字,则可以使用regular expression

printf "%s" "${file}" | sed -e "s/.*\([0-9]*\)\..*/\1/"

让我们说您的问题是通用的,没有提供您想要的很多信息...

如果您要静态删除前4个字符,可以使用参数扩展sedcutawk或任何您想要的...

例如,使用sed时,它将类似于:

printf "%s" "${file}" | sed -e "s/^....\(.*\)....$/\1/"

通过参数扩展将是:

file="${file#????}"
file="${file%????}"
printf "%s" "${file}"

最后,如果您在纯bash环境中,则可以简单地使用一些bash参数扩展(请注意,此选项并非在所有地方都有效):

printf "%s" "${file:4:-4}"

请注意,每个printf都可以(显然)被echo(或echo -n)取代。

答案 3 :(得分:0)

如果您知道要去除开头的几个字符,可能是最简单的 和结束。

name=form1234.tgz

echo "${name:4:$((${#name} - 8))}"

1234