首页 > 代码库 > linux文件和目录常用管理命令

linux文件和目录常用管理命令

文件管理

文件数据的组成:

1.数据

2.元数据:属性信息。

权限,时间戳,属组,属主,文件的名称,文件的节点号等等。

linux的文件类型:

1.普通文件 - f

2.目录文件 d

3.链接文件 

符号链接 l

硬链接 -

4.特殊文件 用于作为硬件设备访问入口的文件。

块设备 b 能够随机的,按照宽的方式进行存取。

字符设备 c 线性的,按照字符逐个存取的设备。

5.套接字文件 socket s

在本机内部用软件模拟的方式让2个进程进行通信的文件。

6.管道文件 pipe p


#touch [OPTION] FILENAME 修改文件的时间戳。但是也能用来创建空文件。

-c --no-create 不创建任何文件。

-m 只修改mtime为当前时间。

-a 只修改atime为当前时间。

-t 指定时间戳,使用格式为[[CC]YY]MMDDhhmm[.ss]

时间戳:

最近一次的访问时间 access

最近一次的修改时间 modify 文件内容的改变

最近一次的改变时间 change 文件元数据的改变。

#stat FILENAME 显示文件状态。


#nano FILENAME 编辑文件。

#rm [OPTION] FILENAME 删除文件。

-i 交互模式,会有相关提示。

-f 强制删除。不提示。

-r 递归。


#cp [OPTION] SRC... DEST 复制文件。

#cp [OPTION] FIEL1 FILE2... DEST 多文件到一个目录。单文件到一个文件。

SRC:文件 DEST:目录 文件复制到目标文件夹下。并保留原来的名称。

SRC;目录 DEST:目录 默认是会忽略目录复制的。使用-r选项可以递归复制。

SRC:文件 DEST:文件 若DEST不存在,则复制并重命名。若存在则覆盖,通常有提示。

SRC:目录 DEST:文件 不能把目录复制成文件。


-r -R --recursive 递归复制。复制文件夹以及子文件和文件夹。默认情况下cp是会忽略目录复制的。

-f 强行复制。若目标文件已存在并无法打开,则会删除文件并覆盖。

-i 在覆盖前提示。

-p 等同于--preserve=mode,ownership,timestamps

--preserve=[ATTR LIST] 在复制时保留文件的属性。默认:mode(权限),ownership(属主属组),timestamps(时间戳).

-a --archive 归档存放。等同于-dR --perserve=all 保留文件上的全部属性。

-L --dereference 总是跟随符号链接。复制的是链接指向的文件。

-P --no-dereference 从不跟随符号链接。若文件是链接,则复制链接。

-d 等同于--no-dereference --perserve=link。复制链接的属性,而不是文件。


例如:

#cp a b c d 将a,b,c复制到d。

#cp /etc/passwd /tmp/abc 



#mv [OPTION] SRC DEST 移动文件。

SRC:文件 DEST:目录 文件移动到目标文件夹下。并保留原来的名称。

SRC;目录 DEST:目录 若目标文件夹不存在。移动并重命名。若目标文件夹存在,则移动到目标文件夹下。

SRC:文件 DEST:文件 同目录下为重命名,不同目录下是移动并重命名。

SRC:目录 DEST:文件 不能用目录覆盖文件。


-f 强制覆盖。

-t --target-directory=DESTDIR 先指定DEST,在指定SRC。

-i 覆盖前提示。




#install [OPTION] 复制文静并指定属性。部分用法类似cp和mv。

-d DIR...将多个目录指定为目标地址。常用来创建目录。

例如:

#install -d /tmp/{a,b}

#ls

/tmp/a

/tmp/b

-m =MODE 指定权限。默认权限为755即rwxr-xr-x。

-t DEST SRC... 


目录管理

#ls [OPTION] DIR 列出目录下文件。

-a 显示目录下的所有文件,显示.和..

       . 表示当前目录

       .. 表示父目录

-A 显示目录下的所有文件,但是不显示.和..


-l 以长格式long显示文件的信息属性。

1.文件类型

2.文件权限(ugo)

3.文件硬链接的个数

4.文件的属主(owner)

5.文件的属组(group)

6.文件的大小

目录的大小一般是目录名字字符个数的大小,一般值都是4k大小。

7.时间戳(timestamp)最近一次被修改的时间。

atime access 文件的访问时间

ctime change 文件的改变时间 改变文件的属性。

文件有两种数据,一种是文件本身的数据,另一种是文件属性的数据。文件的属性数据也叫元数据(metadata)。

mtime modify 文件的修改时间 改变文件的内容。

8.文件名


-h 对显示的结果做单位换算,并不是精确值,只是便于阅读。human-readable。

-d 显示目录本身

-r 逆序显示 reverse

-R 递归 recursive

-i inode 显示inode号码。


#echo [OPTION] [STRING] 显示一行文本

        -n 不换行

        -e   启用逃逸字符。(转义字符。)

            \n    换行。

            \\    显示反斜线自身。

            \b    退格,会覆盖前一个字符。

            \t    横向制表符

            \v    纵向制表符


#cd DIR 切换目录

#cd ~   USERNAME  切换到指定用户名为USERNAME的家目录,只有root可以。

   #cd - 在上个目录和本目录中来回切换。

$PWD

$OLDPWD

. 相对路径下当前目录

.. 相对路径下的上层目录

./ 可以省略,但是某些环境需要


#pwd 显示当前目录。print working directory


#mkdir [OPTION] DIR 创建空目录

-p 创建目录的同时创建父目录

-v 显示创建过程


命令行展开:bash shell在遇到{}会自动展开里边的内容,用逗号来分分隔各个元素。

例如:

#mkdir /mnt/test/{x/m,y}

#ls

/mnt/test/x/m

/mnt/test/y


#mkdir /mnt/test2/{a,d}_{b,c}

#ls

/mnt/test2/a_b

/mnt/test2/a_c

/mnt/test2/d_b

/mnt/test2/d_c


#rmdir [OPTION] DIR 删除空目录

-p 删除子目录同时删除父目录,但是仅限于空目录,非空目录无法删除

例如:

#mkdir /mnt/test/x/y/{z,q}

#tree

/mnt/

|--x

|--y

|--z

`--q

#rmdir -p /mnt/test/x/y/q

#tree

/mnt/

|--x

|--y

`--z




#tree DIR 查看目录树


文本处理

#cat [OPTION] FILENAME... 连接多个文件并打印到标准输出。

-n 显示行号。

-E --show-ends 显示每行行尾的结束符。linux系统文本文件的行结束符为$,windows的为$后跟回车。

-T 显示制表符、

-v 显示其他非打印打印字符,例如回车等。

-A --show-all 显示所有符号。

例如:

#cat /etc/issue

#cat /etc/fstab

#cat /etc/issue /etc/fstab



终端上可以按住shift+pageup/pagedown 查看内容。但是内容有可能超出缓存而显示不完整。


#tac 从最后一行倒序显示文件。


#more 和less类似,但是可以手动翻页查看。操作类似于man,但是不支持向前翻页,到文件尾部会自动退出。


#less man命令就是调用less完成的,操作上和man一样。less到文件尾部不会退出,支持向前翻页。


#head [OPTION] FILENAME 

-NUM 查看前NUM行,默认不加次参数NUM的值是10。空白行也是一行。


#tail [OPTION] FILENAME 查看后NUM行。

-f 显示完成后不退出,此时如有文件内容被修改,则即时显示追加至文件的内容。


#cut [OPTION] FILENAME 剪切

-d SEP(separator) 指定分隔符为SEP。默认是空格。

-f NUM 指定要显示第NUM个字段。

-f NUM 显示第NUM个字段。

-f NUM1,NUM3 显示第NUM1和NUM3个字段。

-f NUM1-NUM3 显示第NUM1到NUM3个字段。


例如:

#cut -d :-f1 /etc/passwd 

以:作为分隔符,显示第1个字段。

#cut -f1,7 /etc/passwd

显示第一个1字段和第7个字段,分隔符为空格。


#sort [OPTION] FILENAME 按照每个字符自左向右ASCII表中的值升序排列文件。

-n --numeric-sort 按照数值大小排序。

-r --reverse 降序排列。

-t 字段分隔符。

-k SEP 以某个字段为关键字或以某个字段开始进行排序。

-u 排序后相同内容只显示1次。仅限于相邻2行内容相同。

-f 忽略字符大小写。



例如:

#sort -t: -k3 /etc/passwd 以冒号为分隔符,从第3个字段开始排序。


#uniq [OPTION] FILENAME 报告或者略过重复行。

-d 只显示重复的内容

-D 显示所有重复的行的内容

-c 显示重复的次数。


文本统计

#wc [OPTION] FILENAME word conun 统计文件行数、单词数、字节数(包括空格字符)。

-l 显示行数

-w 显示单词数

-c 显示字节数(byte)

-m 显示字符数(char)

-L 最长行包含的字符个数。



例如:

#wc /etc/passwd


字符处理

#tr [OPTION] ... SET1 [SET2] 转换或删除字符。针对字符集中每个字符替换。逐个字符处理

-d --delete 删除字符集中所有字符。


例如:

#tr ab AB 把ab字符集替换为AB。

#tr ab AB < /etc/passwd 把/etc/passwd中的ab替换为ab

#tr ‘a-z‘ ‘A-Z‘ < /etc/passwd 小写字母全部替换为大写字母。

#tr -d ‘ab‘ < /etc/passwd 把/etc/passwd中有a和 b的字符删除。


本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1596018

linux文件和目录常用管理命令