RHCE学习笔记-命令行操作文件:创建与删除文件(touch,rm)
创建与删除文件 (touch ,rm)
touch xxxx 创建一个新的空文件
touch -t 201412250101 xxxx 创建一个文件并指定时间属性(年月日时分.秒)
[root@linuxidc home]# touch xxxx
[root@linuxidc home]# touch -t 201412301030 yyyy
[root@linuxidc home]# ls -l xxxx yyyy
-rw-r--r--. 1 root root 0 11月 2 13:00 xxxx (当前时间2015年11月2日2点13分)
-rw-r--r--. 1 root root 0 12月 30 2014 yyyy (指定时间2014年12月30日10点30分)
如何修改Linux文件的时间 http://www.linuxidc.com/Linux/2015-11/124813.htm
把所有的.sh文件修改到三个月前(2013年10月13)的时间。操作命令:
[root@case test]# touch -d "2013/10/13" *.sh
先把touch的参数说明贴在这里:
命令参数:
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-m 或--time=mtime或--time=modify 只更改变动时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。时间是字符串
-t 使用指定的日期时间,而非现在的时间。时间格式是年月日时分.秒
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
touch file1.txt 更新file1.txt的存取和修改时间
touch -c file1.txt 如果file1.txt不存在,不创建文件
touch -r ref_file file1.txt 更新file1.txt的时间戳和ref+file相同
将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.
touch -t 0811142234.50 file1.txt 设定文件的时间错为08年11月14日22点34分50秒
将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.
什么是 touch 命令
众所周知,每个文件都被附有时间戳。这个时间戳记包括访问时间和修改时间。而 Touch 命令主要就是用来修改文件的访问时间和修改时间。
为什么我们需要使用 touch 命令
既然 touch 命令描述的是改变时间戳,那么我们可能会想为什么我们需要去改变时间戳呢?这个问题会引发我们的深思。然而,我想有个理由可以解释为什么我们需要使用它。如果你参加了一个全球范围的开源项目,那么时间戳可能变得很重要。编译源代码文件可能需要同一地区的时间戳。如果未统一,程序可能会编译失败。(译注:有强迫症的同学也很喜欢这个命令——就看不得乱七八糟的时间,;>)
不带任何选项下运行 touch
最简单的使用 touch 命令。只需键入:
- $ touch file_name
File_1.txt原来的时间戳是 12:42。在我们使用 touch 命令后,它改变为了 17:08。由此看出,默认情况下,touch 会将文件的时间戳改为当前时间。
只改变访问时间
正如我们之前提到的,每个文件都附有访问时间和修改时间。上面的时间戳是 17:08。我们可以看更多的细节。
我们发现访问access时间和修改change时间的值是相同的都是 17:08:35 ,还有它们属于同一时区 GMT +7。
如果现在我们要只改变访问时间,我们需要使用-a选项。
- $ touch –a file_1.txt
如你所见,访问时间变为了 17:51:37 ,但是修改时间仍为17:08:35。[译注:原文为 Change time(状态改变时间)应是作者笔误]
只改变修改时间(modify,change)
我们可以使用-m选项来实现。现在我们用file_2.txt作个示例。
- $ touch –m file_2.txt
Touch -m option
现在修改时间从 12:42:20 改为了 17:57:20。请注意,当文件被访问或修改时,状态改变时间域的值总会对其记录。
更改为自定义时间戳
-a和-m选项都会将文件的时间戳改为现在当前时间。当然我们也可以更改为自定义时间戳。使用-t选项实现。
从上面示例示例中的 file_2.txt,我们看出它的时间戳是:
访问时间: 12:42:20
修改时间: 17:57:20
执行日期: 2014-01-14
假如我们想要将访问时间和修改时间改为2014年1月12日 09:58:27。我们可以用下列命令来完成:
- $ touch –t 201401120958.27 file_2.txt
Touch using -t option
-t 选项语法组成 :
[[CC]YY]MMDDhhmm [.SS](年前两位,年后两位,月,日,时,分,秒)
改变日期和时间的另一种方式
如果你觉得[[CC]YY]MMDDhhmm [.SS]格式不适合你,我们也可以使用 -d 选项。下面是-d选项使用的一个示例。
更改指定日期
举例来说,我们有个名为 file_3.txt 的文件,它的相关属性在下面的截图中展示了。
现在我们要将日期2014年1月14日改为2013年12月20日。可以使用下列命令:
- $ touch –d '10-december-2013' file_3.txt
不出意料,访问时间和修改时间的日期已经改为了2013年12月10日。
改变时区
如果我们想改变指定GMT的时间,我们也可以使用-d选项。先让file_3.txt 移回当前时间。
- $ touch file_3.txt
不难发现 file_3.txt 的时区为 GMT +0700。要改为 GMT3 时区,我们只需要键入如下命令:
- $ touch –的GMT3 file_3.txt
好的,现在时间已经改为了 10:00:00 AM。
结合参数下使用-d选项
还可以用很酷的方式使用-d选项。请观察下面的图片。
我们可以将单词 next Sunday 和 GMT 3合成一个值,而 touch 命令仍然能识别它。日期已经改为了2014年1月21日,而当前的日期为2014年1月14日。
还有另一个-d选项的示例。首先,我们要将file3_3.txt重置到当前日期和时间。
- $ touch file_3.txt 然后我们尝试这个命令:
- $ touch –d '1 year ago 13:43:07' file_3.txt
太震撼了,Touch 甚至能识别单词'1 year ago'。现在的日期以及时间已经改为了2013年1月14日,13:43:07。
[root@linuxidc home]# touch –d '4 month ago 13:43:08' uuu
把uuu 这个文件的时间修改成4个月前的13:43:08
创建一个空文件
当你运行 touch 命令目标文件不存在时,touch 会创建一个同名的空文件。
- $ touch file_10.txt
同时创建多个文件
你可以用空格将目标文件分割开来,以此来创建多个文件。
- $ touch doc_10.txt doc_20.txt doc_30.txt
总结
如果你要处理关于文件或目录的时间戳问题,那么 Touch 会对你很有用的。一如既往得你也可以键入man touch或touch --help来显示帮助页面了解更多细节。
rm xxx 删除文件
rm -rf 强制删除文件
命令参数:
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
# touch -- -f 建立-f文件,因为f前面有-,所有要加转义字符2个减号
# ls -l -- -f 查看-f文件,在-f前面加转义字符2个减号。
-rw-r--r--. 1 root root 0 Nov 2 16:17 -f
# rm -rf -- -f 删除-f文件,在-f前面加转义字符2个减号。