文件新建
文件的时间属性分为访问时间(Access)、修改时间(Modify)、状态改变时间(Change),可以使用stat查看文件信息。
新建文件方式有多种,比如touch、vi等。下面介绍touch命令的使用。
命令介绍
功能描述:更新文件的访问时间、修改时间为当前时间。文件如果不存在则创建空文件。
使用方法:
touch [OPTION]...FILE...
常用选项:
选项 |
说明 |
-a |
只改变访问时间 |
-c,–no-create |
不创建任何文件 |
-d,–date=STRING |
STRING替代当前时间 |
-m |
只改变更改时间 |
-r,–reference=FILE |
参照FILE更改时间 |
-t STAMP |
使用时间戳代替当前时间 |
命令使用实例
默认用法,更改文件时间为当前时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@blog ~]# stat test1.txt File: ‘test1.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 913954 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-12 21:54:14.286000000 +0800 Modify: 2015-08-12 21:54:14.286000000 +0800 Change: 2015-08-12 21:54:14.286000000 +0800 Birth: - [root@blog ~]# touch test1.txt [root@blog ~]# stat test1.txt File: ‘test1.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 913954 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-12 21:54:48.671000000 +0800 Modify: 2015-08-12 21:54:48.671000000 +0800 Change: 2015-08-12 21:54:48.671000000 +0800
|
-a,只更改访问时间
1 2 3 4 5 6 7 8 9
| [root@blog ~]# touch -a test1.txt [root@blog ~]# stat test1.txt File: ‘test1.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 913954 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-12 21:56:17.287000000 +0800 Modify: 2015-08-12 21:54:48.671000000 +0800 Change: 2015-08-12 21:56:17.287000000 +0800
|
-m,只改变更改时间
1 2 3 4 5 6 7 8 9 10
| [root@blog ~]# touch -m test1.txt [root@blog ~]# stat test1.txt File: ‘test1.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 913954 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-12 21:56:17.287000000 +0800 Modify: 2015-08-12 21:57:08.959000000 +0800 Change: 2015-08-12 21:57:08.959000000 +0800 Birth: -
|
-r,参照给定文件更改时间
1 2 3 4 5 6 7 8 9
| [root@blog ~]# touch -r test1.txt 123.txt [root@blog ~]# stat 123.txt File: ‘123.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 913955 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-12 21:56:17.287000000 +0800 Modify: 2015-08-12 21:57:08.959000000 +0800 Change: 2015-08-12 21:58:48.402000000 +0800
|
-t,使用时间戳
1 2 3 4 5 6 7 8 9
| [root@blog ~]# touch -t 209912121234 123.txt [root@blog ~]# stat 123.txt File: ‘123.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 913955 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2099-12-12 12:34:00.000000000 +0800 Modify: 2099-12-12 12:34:00.000000000 +0800 Change: 2015-08-12 22:00:15.235000000 +0800
|
文件删除
命令介绍
功能描述:删除指定文件,默认不删除目录
使用方法:
rm [OPTION]...FILE...
常用选项:
选项 |
说明 |
-f,–force |
忽略不存在的文件,并且删除前不提示 |
-i |
删除前给出提示 |
-r,-R |
递归删除目录及其文件 |
命令使用实例
默认删除文件,会给出提示
1 2 3 4 5 6
| [root@blog ~]# ls 123.txt test1.txt [root@blog ~]# rm test1.txt rm: remove regular empty file ‘test1.txt’? y [root@blog ~]# ls 123.txt
|
-f,无提示
1 2 3 4 5
| [root@blog ~]# ls 123.txt [root@blog ~]# rm -f 123.txt [root@blog ~]# ls [root@blog ~]#
|
-rf,无提示递归删除目录文件
1 2 3 4 5 6
| [root@blog ~]# find test/ test/ test/test.txt [root@blog ~]# rm -rf test [root@blog ~]# ls [root@blog ~]#
|
文件移动
命令介绍
功能描述:重命名文件,或者移动文件
使用方法:
mv [OPTION]...[-T]SOURCE...DEST
mv [OPTION]...SOURCE...DIRECTORY
mv [OPTION]...-t DIRECTORY SOURCE
常用选项:
选项 |
说明 |
-f,–force |
覆盖之前不给出提示 |
-T |
对待目标为一个正常文件,可省略 |
-f |
移动所有的源文件到指定目录 |
命令使用实例
[-T],重命名,其中-T选项可以省略
1 2 3 4 5
| [root@blog ~]# ls test.txt [root@blog ~]# mv test.txt hello.txt [root@blog ~]# ls hello.txt
|
移动文件到指定目录,名称不变
1 2 3 4 5 6 7 8 9
| [root@blog ~]# ls hello.txt test [root@blog ~]# mv hello.txt test/ [root@blog ~]# ls test [root@blog ~]# cd test/ [root@blog test]# ls hello.txt [root@blog test]#
|
-t,移动全部源文件到指定目录
1 2 3 4 5 6 7
| [root@blog ~]# ls 1.txt 2.txt test [root@blog ~]# mv -t test/ 1.txt 2.txt [root@blog ~]# cd test/ [root@blog test]# ls 1.txt 2.txt hello.txt [root@blog test]#
|
文件查找
在实际环境中,系统中的文件数量很多,我们可以根据文件类型、文件大小、修改时间等来迅速查找文件。
现有文件hello.txt,内容如下:
aA
abB
abcC
abcdD
abcdeE
abcdefF
wc命令
命令介绍
功能描述:输出文件的行数、字符数、字节数
使用方法:
wc [OPTION]...FILE...
常用选项:
选项 |
说明 |
-c,–bytes |
统计输出字节数 |
-m,–chars |
统计输出字符数 |
-l,–lines |
统计输出行数 |
-w,–words |
统计输出词语数 |
命令使用实例
以hello.txt为例:
1 2 3 4 5 6 7 8
| [root@blog ~]# wc -c hello.txt 33 hello.txt [root@blog ~]# wc -m hello.txt 33 hello.txt [root@blog ~]# wc -l hello.txt 6 hello.txt [root@blog ~]# wc -w hello.txt 6 hello.txt
|
grep命令
功能描述:根据条件输出匹配结果
使用方法:
grep [OPTION]...FILE...
常用选项:
选项 |
说明 |
-i,–ignore-case |
忽略大小写 |
-v,–invert-match |
反向查找 |
-c,–count |
只输出匹配到的个数 |
-n,–line-number |
输出匹配到的行号 |
命令使用实例
以hello.txt为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@blog ~] aA abB abcC abcdD abcdeE abcdefF [root@blog ~] aA abB abcC abcdeE abcdefF [root@blog ~] 6 [root@blog ~] 2:abB
|
sort命令
功能描述:排序,默认升序
使用方法:
sort [OPTION]...FILE...
常用选项:
文件内容如下:
命令使用实例
以hello.txt为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [root@blog ~]# sort hello.txt aA abB abcC abcdD abcdeE abcdefF [root@blog ~]# sort -r hello.txt abcdefF abcdeE abcdD abcC abB aA
|
tail命令
功能描述:默认输出文件后10行
使用方法:
tail [OPTION]...FILE...
常用选项:
选项 |
说明 |
-c,–bytes=K |
输出后K个字节 |
-f,–follw |
循环读取,主要用于读取日志 |
-n,–lines=K |
输出后K行,默认为10 |
命令使用实例
以hello.txt为例:
1 2 3 4 5 6 7 8 9 10 11 12
| [root@blog ~]# tail hello.txt aA abB abcC abcdD abcdeE abcdefF [root@blog ~]# tail -c 5 hello.txt defF [root@blog ~]# tail -n 1 hello.txt abcdefF [root@blog ~]#
|
head命令
功能描述:默认输出文件前10行
使用方法:
head [OPTION]...FILE...
常用选项:
选项 |
说明 |
-c,–bytes=K |
输出前K个字节 |
-n,–lines=K |
输出前K行 |
命令使用实例
以hello.txt为例:
1 2 3 4 5 6 7 8 9 10 11
| [root@blog ~]# head hello.txt aA abB abcC abcdD abcdeE abcdefF [root@blog ~]# head -c 3 hello.txt aA [root@blog ~]# head -n 1 hello.txt aA
|
功能描述:输出文件的行数、字符数、字节数,默认输出当前目录以及子目录下的所有文件,包括隐藏文件。
使用方法:
find [PATH] [EXPRESSION] [FILENAME]
常用选项:
选项 |
说明 |
-type |
指定文件类型 |
-printf |
指定格式输出,默认输出文件名 |
-name |
指定文件名,单独使用时可省略 |
-iname |
指定文件名,忽略大小写 |
-regex |
正则匹配 |
! |
非 |
size |
文件大 |
-maxdepth |
最大目录深度 |
-mindepth |
至少目录深度 |
PATH |
默认为当前目录 |
命令使用实例
统计普通文档的个数
[root@blog ~]# find -type f |wc -l
14
其中-type 文件类型 包括以下几种:
- b 块设备
- d 目录
- c 字符设备
- P 管道文档
- l 符号连接文档
- f 普通文档
根据时间排序
%Ak,通过k形式的文件最后访问时间。其中k的主要取值如下:
k取值 |
说明 |
@ |
1970.1.1 00:00至今过去的秒数 |
T |
时间,24小时,hh:mm:ss |
+ |
日期+时间,如2004-04-28+22:22:05.0 |
%Tk,通过k形式的文件最后更改时间,k值和%Ak一样。
%t,以Ctime函数的形式返回文件最后更改时间
%p,带路径的文件名
%s,文件大小
根据最后更改时间排序:
1 2 3 4 5 6
| [root@blog ~]# find -type f -printf '%T+ %p\n'|sort |head -n 5 2013-12-29+10:26:31.0000000000 ./.bash_logout 2013-12-29+10:26:31.0000000000 ./.bash_profile 2013-12-29+10:26:31.0000000000 ./.bashrc 2013-12-29+10:26:31.0000000000 ./.cshrc 2013-12-29+10:26:31.0000000000 ./.tcshrc
|
根据最后访问时间排序:
1 2 3 4 5 6
| [root@blog ~]# find -type f -printf '%A+ %p\n'|sort |head -n 5 2013-12-29+10:26:31.0000000000 ./.cshrc 2013-12-29+10:26:31.0000000000 ./.tcshrc 2015-08-05+11:53:46.6250000000 ./.cache/pip/http/f/e/d/0/e/fed0ed508030b766d5b0c2792132c8bf197804464765b46b361f93a4 2015-08-05+11:53:46.6360000000 ./.cache/pip/selfcheck.json 2015-08-05+11:53:46.9460000000 ./.cache/pip/http/a/2/2/9/b/a229b0c591a4dcdfd85b2c9b34cc4d6d2d60cb30cca928b18f6699df
|
获取/usr目录下后缀名为txt的前两个文件:
1 2 3
| [root@blog ~]# find /usr/ -name "*.txt" |head -n 2 /usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.4.txt /usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.7.txt
|
获取最近访问的5个文件:
1 2 3 4 5 6
| [root@blog ~]# find -type f -printf '%A@ %Aa %t\n'|sort |tail -n 5 1439296501.2970000000 Tue Sun Dec 29 10:26:31.0000000000 2013 1439382712.9140000000 Wed Wed Aug 12 20:19:18.0937000000 2015 1439383521.5720000000 Wed Wed Aug 12 20:45:21.0572000000 2015 1439384494.4100000000 Wed Wed Aug 12 21:01:34.0410000000 2015 1439384501.0380000000 Wed Wed Aug 12 21:01:41.0038000000 2015
|
估计某个特定目录或文件在文件系统上磁盘的使用情况
最后,当掌握了上述命令的基本使用方法,就可以根据的需求进行文件查找,当然文件查找的命令也不是唯一的,要灵活是运用,多看手册。