分享
 
 
 

RHCE学习笔记2--命令行操作文件

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: |||超大  

1、创建与删除文件 (touch ,rm)

touch xxxx 创建一个新的空文件

touch -t 201412250101 xxxx 创建一个文件并指定时间属性(年月日时分.秒)

[root@cai home]#touch xxxx

[root@cai home]#touch -t 201412301030 yyyy

[root@cai 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文件的时间

把所有的.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@cai 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个减号。

2、创建目录与删除目录

mkdir xxx 创建一个目录;

mkdir -p xxx/yyy 递归创建目录;

rmdir xxx/ 删除空目录;

rm -rf XXX/ 强制删除非空目录;

-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,

系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

-v, --verbose 每次创建新目录都显示信息

#mkdir -p test2/test22 递归创建多个目录

# mkdir -v test4 (创建新目录都显示信息)

mkdir: 已创建目录 "test4"

# mkdir -vp test5/test5-1

mkdir: 已创建目录 "test5"

mkdir: 已创建目录 "test5/test5-1"

一个命令创建项目的目录结构

# mkdir -vp scf/{lib/,bin/,doc/{info,PRoduct},logs/{info,product},service/deploy/{info,product}}

mkdir: 已创建目录 "scf"

mkdir: 已创建目录 "scf/lib"

mkdir: 已创建目录 "scf/bin"

mkdir: 已创建目录 "scf/doc"

mkdir: 已创建目录 "scf/doc/info"

mkdir: 已创建目录 "scf/doc/product"

mkdir: 已创建目录 "scf/logs"

mkdir: 已创建目录 "scf/logs/info"

mkdir: 已创建目录 "scf/logs/product"

mkdir: 已创建目录 "scf/service"

mkdir: 已创建目录 "scf/service/deploy"

mkdir: 已创建目录 "scf/service/deploy/info"

mkdir: 已创建目录 "scf/service/deploy/product"

# tree scf/

scf/

|-- bin

|-- doc

| |-- info

| `-- product

|-- lib

|-- logs

| |-- info

| `-- product

`-- service

`-- deploy

|-- info

`-- product

12 directories, 0 files

3、拷贝文件与目录

cp /path1/xxx /path2/ yyy拷贝path1路径下的xxx 文件到 路径path2路径下,并命名为yyy,如果yyy文件已经存在,则会覆盖原文件,加上 -i 选项会询问是否覆盖;

cp -p /path1/xxx /path2/ yyy 拷贝文件保留原文件的属性;

cp -rf /path1/ /path2/ 拷贝目录path1的文件到目录path2

cp -a 与 cp -dpr=all 相同

-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;

-b或--backup 删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录

-f 强行复制文件或目录,不论目的文件或目录是否已经存在

-i覆盖文件之前先询问用户

-p 或--preserve 保留源文件或目录的属性,包括所有者、所属组、权限与时间

用root来"cp -p"是可以的,这么说,"cp -p"这个命令对于普通用户来说是等同于直接"cp"了

--parents 保留源文件或目录的路径,

-r 或-R 递归处理,将指定目录下的文件与子目录一并处理。

-l或--link 对源文件建立硬链接,而非复制文件

-s或--symbolic-link 对源文件建立符号链接,而非复制文件

-S <备份字尾字符串>或--suffix=<备份字尾字符串>用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"

-u或--update 使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件

.复制文件,只有源文件较目的文件的修改时间新时,才复制文件

cp -u -v file1 file2

.将文件file1复制成文件file2

cp file1 file2

.采用交互方式将文件file1复制成文件file2

cp -i file1 file2

.将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式

cp -f file1 file2

.将目录dir1复制成目录dir2

cp -r dir1 dir2

.同时将文件file1、file2、file3与目录dir1复制到dir2

cp -r file1 file2 file3 dir1 dir2

.复制时保留文件属性

cp -p a.txt /tmp

.复制时保留文件的目录结构

cp --parents /var/tmp/a.txt ./temp/

.复制时产生备份文件

cp -b a.txt tmp/

.指定备份文件尾标

cp -b -S _bak a.txt /tmp

4、剪切文件

mv /path1/xx /path2/yy 剪切path1路径下的xx 剪切到 path2路径下的yy, 如果path1与path2路径相同,则将xx重命名为yy;

5、查看文件

cat xx 适合查看内容较少的文件;

more

less

more 与less相同的地方是都可以用空格键向下翻页,所不同的是less允许上下键向上浏览浏览,more 则不行;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有