小编Esh*_*sha的帖子

文件访问时间

我正在使用bash外壳。如果我只是用vi编辑器打开一个文件并关闭它甚至一次都没有移动光标,那么据我所知,应该更改文件的最后访问时间,因为它已被编辑器打开。

但是当我用文件进行试验时,这并没有发生。在这种情况下,最后访问时间保持不变。我误解了什么吗?

请更清楚地阐明上次访问时间的概念,并解释vi编辑器如何能够在不修改此时间戳的情况下访问文件。

linux vi timestamps files

4
推荐指数
1
解决办法
263
查看次数

仅将文件名的一部分转换为大写

在 shell 脚本程序中,如果转换后的文件名不存在,我需要将文件名转换为大写。在这种特殊情况下,我只需要将基本名称更改为大写,将扩展名(如果有)保持原样。

我做这个问题的想法是首先分别提取基名和扩展名,使用tr命令将基名转换为大写 ,然后检查目录中是否存在更改的基名和扩展名。

如果它不存在,那么我将使用 mv 用大写的基本名称更改原始文件名。现在我认为这可以通过两种方式完成:首先使用expr,其次使用cutwith .(space-period-space) 作为分隔符。

如果我想expr用于提取基本名称(例如,从文件名 -python1.pyphonelist),那么我写了这个:

basefile=`expr "$filename" : '\(.*\)\.*.*' ` 
Run Code Online (Sandbox Code Playgroud)

我也使用\.*了那些没有任何扩展名的文件名,因为\.* 会忽略零次或多次出现的.,但是这个表达式expr不能正常工作。对于任何文件名,它都按原样返回整个文件名。

任何人都可以请解释我错在哪里。另外请建议我如何使用expr仅从文件名中提取扩展名。

shell bash filenames regular-expression expr

3
推荐指数
1
解决办法
888
查看次数

标签 统计

bash ×1

expr ×1

filenames ×1

files ×1

linux ×1

regular-expression ×1

shell ×1

timestamps ×1

vi ×1