linux 文件及文件夹操作总结

文件基本操作

查看

cat命令

cat命令用于查看纯文本文件(较短的),格式为:“cat [选项] [文件]”。
参数 作用

-n      显示行号
-b      显示行号(不包括空行)
-A      显示出“不可见”的符号,如空格,tab键等等

tac命令
是 cat 的反向操作,从最后一行开始打印。

more命令
more命令用于查看纯文本文件(较长的),格式为:“more [选项] 文件”

参数      作用
-n      显示行号
-b      显示行号(不包括空行)
-A      显示出“不可见”的符号,如空格,tab键等等

head命令
head命令用于查看纯文本文档的前N行,格式为:“head [选项] [文件]”。
参数 作用

-n 10       显示10行
-n -10      正常输出(如cat命令),但不显示最后的10行

tail命令
tail命令用于查看纯文本文档的后N行,格式为:“tail [选项] [文件]”

参数      作用
-n 10   显示后面的10行
-f      持续刷新显示的内容

od命令
od命令用于对查看特殊格式的文件,格式为:“od [选项] [文件]”。
参数 作用

-t a    默认字符
-t c    ASCII字符
-t o    八进制
-t d    十进制
-t x    十六进制
-t f    浮点数

复制删除移动

cp命令

cp命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”。
复制命令的三种情况:
目标文件是一个目录,会将源文件复制到该目录中。
目标文件是一个文件,会将源文件覆盖该文件。
目标文件不存在,将会复制源文件并修改为目标文件的名称(重命名)。

参数      作用
-p      保留原始文件的属性
-d      若对象为"链接文件",则保留该"链接文件"的属性
-r      递归持续复制(用于目录)
-i      若目标文件存在则询问是否覆盖
-a      相当于-pdr(p,d,r为上述的参数)

mv命令
mv命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”。

rm命令
rm命令用于删除文件或目录,格式为:“rm [选项] 文件”。
删除普通文件并提示确认信息:“rm 文件名”
删除普通文件或目录文件,不提示:“rm -rf 文件或目录名”

参数      作用
-f      忽略警告信息
-i      删除前先询问
-r      删除文件夹

dd命令
dd命令用于指定大小的拷贝的文件或指定转换文件,格式为:“dd [参数]”。

参数          作用
if          输入的文件名称。
of          输出的文件名称。
bs          设置每个“块”的大小。
count       设置要拷贝“块”的个数。
conv=ucase  将字母从小写转换为大写。
conv=lcase  把字符从大写转换为小写。

创建

vi命令
比如vi www.sh 会显示一个空白的文件,添加字符并且:wq后,会保存退出

touch命令

touch命令用于创建空白文件与修改文件时间,格式为:“touch [选项] [文件]”。
1.我们可以用“touch test”轻松的创建出一个名字为test的空白文档,所以这个功能无须介绍。
2.对于在Linux中的文件有三种时间:
更改时间(mtime):内容修改时间(不包括权限的)
更改权限(ctime):更改权限与属性的时间
读取时间(atime):读取文件内容的时间
如果黑客执行了touch -d “2 days ago” test,便将访问与修改时间修改为了2天前(伪造了自己没有动过该文件的假象)。
3.

  参数      作用
    -a      近修改“访问时间”(atime)
    -m      近修改“更改时间”(mtime)
    -d      同时修改atime与mtime
    -t      要修改成的时间[YYMMDDhhmm]

指令与文件搜索

which
指令搜索。
which [-a] command
-a :将所有指令列出,而不是只列第一个

whereis
文件搜索。速度比较快,因为它只搜索几个特定的目录。
whereis [-bmsu] dirname/filename

locate
文件搜索。可以用关键字或者正则表达式进行搜索。
locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,它存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件。可以使用 updatedb 来立即更新数据库。
locate [-ir] keyword
-r:正则表达式

find
文件搜索。可以使用文件的属性和权限进行搜索。
find [basedir] [option]
example: find . -name “shadow*”
1 与时间有关的选项
-mtime n :列出在 n 天前的那一天修改过内容的文件
-mtime +n :列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n :列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
+4、4 和 -4 的指示的时间范围如下:
在这里插入图片描述

2 与文件拥有者和所属群组有关的选项
-uid n
-gid n
-user name
-group name
-nouser :搜索拥有者不存在 /etc/passwd 的文件
-nogroup:搜索所属群组不存在于 /etc/group 的文件

3 与文件权限和名称有关的选项
-name filename
-size [±]SIZE:搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有:c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode :搜索权限等于 mode 的文件
-perm -mode :搜索权限包含 mode 的文件
-perm /mode :搜索权限包含任一 mode 的文件

其他

tr命令
tr命令用于转换文本文件中的字符,格式为:“tr [原始字符] [目标字符]”。
例如:查看tr.txt文件,并将所有的小写字母转换为大写字母

 cat tr.txt | tr [a-z] [A-Z]

wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
参数 作用

-l      只显示行数
-w      只显示单词数
-c      只显示字节数

cut命令
cut命令用于通过列来提取文本字符,格式为:“cut [参数] 文本”。
参数 作用

-d 分隔符    指定分隔符,默认为Tab。
-f          指定显示的列数。
-c          单位改为字符

获取当前系统中所有用户的名称:
参数作用:-d以”:”来做分隔符,-f参数代表只看第一列的内容。

cut -d: -f1 /etc/passwd

权限(包括文件夹)

查看权限

我们来查看一下zhaoyuqiang.html这个网页文件的权限。
方法:在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)查看的是xxx文件之中的文件权限
那么就会出现相类似的信息,主要都是这些:-rw-rw-r–

权限含义

-rw-r--r--

中间那三个 rw- 代表的是所有者(user)拥有的权限
然后那三个 r-- 代表的是组群(group)拥有的权限
最后那三个 r-- 代表的是其他人(other)拥有的权限
然后
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
之后的root root 就是用户拥有者了。
需要注意的是:查看文件权限的目录问题: 如果有文件夹 /a/b/c
那么执行 ls -l /a/b 查看权限的文件并不是b,而是查看的c的权限。
ls -l /a 查看的是b文件的权限
ls -l /a/b 查看的是c文件的权限
ls -l /a/b/c 查看的是c文件的权限

修改权限

在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替

r ------------4

w -----------2

x ------------1

- ------------0

行动:
表示添加权限
-表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权限
-rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限

修改权限(数字)

另外一种方法是以数字来表示权限,而且仅需三个数字。
r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0
(一) 我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:111 101 100再将其每三位转换成为一个十进制数,就是754。
(二) 也可以将其简单的理解为一种运算: (4+2+1) (4+1) (4)=754
例如,我们想让zhaoyuqiang.html这个文件的权限为:
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行 是
那么,我们先根据上表得到权限串为:rw-rw-r–,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我们执行命令:

chmod 664 test.sh


[root@localhost ~]# chmod 700 /mnt/fileA注:仅把fileA目录的权限设置为700
[root@localhost ~]# chmod -R 744 /mnt/fileA注:表示将整个/mnt/fileA

目录与其中的文件和子目录的权限都设置为744
需要注意的还是关于修改权限的文件问题:比如有文件 /a/b/c.
执行: chmod 700 /a 修改的是a文件的权限

   chmod 700 /a/b  修改的是b文件的权限 
   chmod 700 /a/b/c  修改的是c文件的权限

要和查看文件权限的目录分开

所有者

chown 语法
chown [选项]… [所有者][:[组]] 文件…
举例:将oldboy文件的属主改为oldboy用户

[root@localhost oldboy]# ls -l oldboy
-rw-r--r-- 1 root root 5 May  1 09:57 oldboy
[root@localhost ~]# chown  oldboy:root oldboy  #这里冒号也可以换成点(.)
[root@localhost oldboy]# ls -l oldboy
-rw-r--r-- 1 oldboy root 5 May  1 09:57 oldboy

说明:chown 所接的新的属主和新的属组之间应该以.或:连接,属主和属组任意之一可以为空。如果属主为空,应该是:属组;如果属组为空,就不必需要.或:了。

root@localhost ~]# mkdir -p /test/oldboy
[root@localhost ~]# cd /test/oldboy/
[root@localhost oldboy]# touch oldboy.txt
[root@localhost oldboy]# ls -l oldboy.txt 
-rw-r--r-- 1 root root 0 May  3 08:09 oldboy.txt
[root@localhost oldboy]# chown zgy oldboy.txt      #把oldboy.txt的属主改为zgy
[root@localhost oldboy]# ls -l oldboy.txt 
-rw-r--r-- 1 zgy root 0 May  3 08:09 oldboy.txt
[root@localhost oldboy]# chown :zgy oldboy.txt 
[root@localhost oldboy]# ls -l oldboy.txt 
-rw-r--r-- 1 zgy zgy 0 May  3 08:09 oldboy.txt
[root@localhost oldboy]# chown root:etiantian oldboy.txt   #把oldboy.txt的属主改为root,把属组改成etiantian用户组
[root@localhost oldboy]# ls -l oldboy.txt 
-rw-r--r-- 1 root etiantian 0 May  3 08:09 oldboy.txt

特别提示:要修改的用户和组鄙视是系统中已经存在的。
chown也提供了-R参数,这个参数对目录改变属主和属组极为有用,我们可以通过加-R参数来改变某个目录下的所有文件到新的属主或属组;

[root@localhost oldboy]# mkdir zgy_dir
[root@localhost oldboy]# ls -ld zgy_dir/
drwxr-xr-x 2 root root 4096 May  3 08:26 zgy_dir/
[root@localhost oldboy]# mkdir zgy_dir
[root@localhost oldboy]# ls -ld zgy_dir/
drwxr-xr-x 2 root root 4096 May  3 08:26 zgy_dir/

文件夹

创建

mkdir命令
mkdir用于创建空白的文件夹,格式为:“mkdir [选项] 目录”。
参数 作用

-m=MODE     默认的文件目录权限,如"-m 755"
-p          连续创建多层目录(若文件夹已存在则忽略)
-v          显示创建的过程

查看目录进入

pwd命令
pwd命令用于显示当前的工作目录,格式为:“pwd [选项]”。
参数 作用

-P      显示真实路径。(即非快捷链接的地址)

cd命令
cd命令用于切换工作路径,格式为:“cd [目录名称]”。
参数 作用

-           切换到上一次的目录,如“cd -”
~           切换到“家目录”,如"cd ~"
~username   切换到其他用户的家目录,如"cd ~teak"
..          切换到上级目录,如"cd .."

列出文件与排序

ll命令
ll 是 ls -l 的别名,ll 命令可以看到该目录下的所有目录和文件的详细信息

ls命令
列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。

ls 参数格式
ls [OPTION]… [FILE]…

参数作用

-a  列出指定目录下的所有文件,包括隐藏文件
-c 使用最后一次更改文件状态以进行排序(-t)或长时间打印(-l)的时间
-h 与-l选项一起使用时,请使用单位后缀:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2为基数的大小将数字减少到3或更少
-l 长格式列表。(见下文)。如果输出到终端,则所有文件大小的总和将输出到长清单前面的一行中
-n 以数字形式显示用户和组id,而不是在长(-l)输出中转换为用户或组名。这个选项默认打开-l选项
-o 以长格式列出,但省略组id
-s 显示每个文件实际使用的文件系统块的数量,以512字节为单位,其中部分单元四舍五入为下一个整数值
-t 在按照字典顺序对操作数排序之前,先按修改的时间排序(最近修改的是first)
-u 使用最后一次访问的时间,而不是最后一次修改文件进行排序
$ ls
test  tmp
$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  test  tmp
#可以看到通过ls -a 可以查看当前目录影藏的文件,Linux下(.)开头的文件是隐藏文件。
$ ls -l
total 4
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -lh
total 4.0K
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp
$ ls -ll
total 4
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -alh
total 28K
drwx------   3 test hero 4.0K Dec 21 19:54 .
drwxr-xr-x. 19 root  root 4.0K Aug  1 10:41 ..
-rw-------   1 test hero  226 Dec 21 19:54 .bash_history
-rw-r--r--   1 test hero   18 Aug  3  2016 .bash_logout
-rw-r--r--   1 test hero  193 Aug  3  2016 .bash_profile
-rw-r--r--   1 test hero  231 Aug  3  2016 .bashrc
-rw-r--r--   1 test hero    0 Dec 21 19:54 test
drwxr-xr-x   2 test hero 4.0K Dec 21 19:54 tmp
$ ls -o
total 4
-rw-r--r-- 1 test    0 Dec 21 19:54 test
drwxr-xr-x 2 test 4096 Dec 21 19:54 tmp
$ ls -oh
total 4.0K
-rw-r--r-- 1 test    0 Dec 21 19:54 test
drwxr-xr-x 2 test 4.0K Dec 21 19:54 tmp

du命令
Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。
du 会显示指定的目录或文件所占用的磁盘空间。

语法
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][–block-size][–exclude=<目录或文件>][–max-depth=<目录层数>][–help][–version][目录或文件]

参数说明:

-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或–dereference-args 显示指定符号连接的源文件大小。
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
-H或–si 与-h参数相同,但是K,M,G是以1000为换算单位。
-k或–kilobytes 以1024 bytes为单位。
-l或–count-links 重复计算硬件连接的文件。
-L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或–megabytes 以1MB为单位。
-s或–summarize 仅显示总计。
-S或–separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
–exclude=<目录或文件> 略过指定的目录或文件。
–max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
–help 显示帮助。
–version 显示版本信息。
实例

显示目录或者文件所占空间:

# du
608     ./test6
308     ./test4
4       ./scf/lib
4       ./scf/service/deploy/product
4       ./scf/service/deploy/info
12      ./scf/service/deploy
16      ./scf/service
4       ./scf/doc
4       ./scf/bin
32      ./scf
8       ./test3
1288    .
只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小

显示指定文件所占空间

# du log2012.log 
300     log2012.log
方便阅读的格式显示test目录所占空间情况:

# du -h test
608K    test/test6
308K    test/test4
4.0K    test/scf/lib
4.0K    test/scf/service/deploy/product
4.0K    test/scf/service/deploy/info
12K     test/scf/service/deploy
16K     test/scf/service
4.0K    test/scf/doc
4.0K    test/scf/bin
32K     test/scf
8.0K    test/test3
1.3M    test

对文件大小进行排序,通过sort 这个命令来帮助我们排序,但是这个排序不对哦,因为加了-h的参数导致。
[root@node ~]# du -s /usr/*  |sort -nr
581208  /usr/lib
285748  /usr/bin
268664  /usr/share
162984  /usr/lib64
57688   /usr/sbin
11884   /usr/libexec
36  /usr/include
0   /usr/tmp
0   /usr/src
0   /usr/local
0   /usr/games
0   /usr/etc

sort 命令
Linux 命令大全 Linux 命令大全
Linux sort 命令用于将文本文件内容加以排序。
sort 可针对文本文件的内容,以行为单位来排序。

语法
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison][文件][-k field1[,field2]]

参数说明:

-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
–help 显示帮助。
–version 显示版本信息。
[-k field1[,field2]] 按指定的列进行排序。

在使用 sort 命令以默认的式对文件的行进行排序,使用的命令如下:

sort testfile 
sort 命令将以默认的方式将文本文件的第一列以 ASCII 码的次序排列,并将结果输出到标准输出。

使用 cat 命令显示 testfile 文件可知其原有的排序如下:

$ cat testfile      # testfile文件原有排序  
test 30  
Hello 95  
Linux 85 
使用 sort 命令重排后的结果如下:

$ sort testfile # 重排结果  
Hello 95  
Linux 85  
test 30 
使用 -k 参数设置对第二列的值进行重排,结果如下:

$ sort testfile -k 2
test 30  
Linux 85 
Hello 95  

复制删除移动

cp命令

cp命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”。
复制命令的三种情况:
目标文件是一个目录,会将源文件复制到该目录中。
目标文件是一个文件,会将源文件覆盖该文件。
目标文件不存在,将会复制源文件并修改为目标文件的名称(重命名)。

参数      作用
-p      保留原始文件的属性
-d      若对象为"链接文件",则保留该"链接文件"的属性
-r      递归持续复制(用于目录)
-i      若目标文件存在则询问是否覆盖
-a      相当于-pdr(p,d,r为上述的参数)

mv命令
mv命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”。

rm命令
rm命令用于删除文件或目录,格式为:“rm [选项] 文件”。
删除普通文件并提示确认信息:“rm 文件名”
删除普通文件或目录文件,不提示:“rm -rf 文件或目录名”

参数      作用
-f      忽略警告信息
-i      删除前先询问
-r      删除文件夹
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值