Linux文件管理

来自CloudWiki
跳转至: 导航搜索

文件管理

创建文件 -- touch命令

用途:新建空文件,或更新文件时间标记

格式:touch 文件名…

[root@localhost ~]# touch  file1.txt 
[root@localhost ~]# touch  file1.txt  file2.doc
[root@localhost ~]# ls  file*
file1.txt    file2.doc

查看文件类型 -- file命令

file命令

用途:查看文件类型

格式: file 文件名…

[root@cloud17 ~]# file Music
Music: directory
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for ……
[root@maxin ~]# file 123.txt
123.txt: ASCII text


文件删除命令—— rm

用途:删除(Remove)文件或目录

格式:rm [选项]... 文件或目录

常用命令选项

  • -f:强行删除文件或目录,不进行提醒
  • -i:删除文件或目录时提醒用户确认
  • -r:递归删除整个目录树

删除文件:

  rm 123.txt

删除目录:(加选项 -r )

[root@iZwz9a4d6crd1w205b54pmZ test]# rm -r uDir
rm: descend into directory `uDir'? y
rm: remove regular empty file `uDir/b.txt'? y
rm: remove regular empty file `uDir/a.txt'? y
rm: remove regular empty file `uDir/1.txt'? y
rm: remove regular empty file `uDir/2.txt'? y
rm: remove directory `uDir'? y

如果不想看到删除时的提示,可这样写:

[root@iZwz9a4d6crd1w205b54pmZ test]# \rm -rf newDir

文件移动命令 —— mv

用途:移动(Move)文件或目录 若如果目标位置与源位置相同,则相当于改名

格式:mv [选项]... 源文件或目录… 目标文件或目录

移动文件:

[root@iZwz9a4d6crd1w205b54pmZ test]# mkdir testDir
[root@iZwz9a4d6crd1w205b54pmZ test]# mv 1.txt testDir/   
[root@iZwz9a4d6crd1w205b54pmZ test]# ls testDir
1.txt

给文件改名:

[root@iZwz9a4d6crd1w205b54pmZ test]# touch 1.txt
[root@iZwz9a4d6crd1w205b54pmZ test]# mv 1.txt my.txt

思考:mv命令都有哪两个作用 ?

文件复制命令 —— cp

cp命令

用途:复制(Copy)文件或目录

格式:cp [选项]... 源文件或目录… 目标文件或目录

常用命令选项

  • -r:递归复制整个目录树
  • -p:保持源文件的属性不变
  • -f:强制覆盖目标同名文件或目录
  • -i:需要覆盖文件或目录时进行提醒

用法请参考这篇博文:http://baijiahao.baidu.com/s?id=1584730406677513659&wfr=spider&for=pc


基本用法:复制一个源文件到目标文件(夹)

这个是使用频率最多的命令,负责把一个源文件复制到目标文件(夹)下

[root@iZwz9a4d6crd1w205b54pmZ test]# touch 1.txt
[root@iZwz9a4d6crd1w205b54pmZ test]# mkdir newDir
[root@iZwz9a4d6crd1w205b54pmZ test]# cp 1.txt newDir/   #将文件复制到指定文件夹下
[root@iZwz9a4d6crd1w205b54pmZ test]# cp 1.txt newDir/2.txt   #将文件复制到指定文件夹下,以新的名字命名
[root@iZwz9a4d6crd1w205b54pmZ test]# ls newDir
1.txt  2.txt


复制多个文件到目标文件(夹)下

以下,有两种命令格式:第一种命令格式可以把列出来的多个文件一次性复制到目标文件夹下,每个文件直接用空格分隔;第二种命令格式使用了通配符*,如下图所示,可以将所有以“.txt”结尾的文件都复制到文件夹testDir下。

[root@iZwz9a4d6crd1w205b54pmZ test]# touch a.txt b.txt
[root@iZwz9a4d6crd1w205b54pmZ test]# cp 1.txt a.txt b.txt newDir/
cp: overwrite `newDir/1.txt'? y
[root@iZwz9a4d6crd1w205b54pmZ test]# ls newDir
1.txt  2.txt  a.txt  b.txt
[root@iZwz9a4d6crd1w205b54pmZ test]# cp *.txt newDir/
cp: overwrite `newDir/1.txt'? y
cp: overwrite `newDir/a.txt'? y
cp: overwrite `newDir/b.txt'? y

复制文件当文件重叠时不提示

如果复制时不想出现overwrite的提示,可以这样输入:(加参数-f ,前面加\)

[root@maxin ~]# \cp -f *.txt newDir/

这样操作的原理请见:https://blog.csdn.net/iw1210/article/details/46550707

递归复制源文件夹到目标文件夹下

命令格式为:cp -r 源文件夹 目标文件夹

这个也是使用频率很高的命令,只需要记住复制文件夹一定要加“-r”参数,否则会出现“cp: omitting directory”错误。

如果dir2目录不存在,则可以直接使用 cp -r dir1 dir2

[root@iZwz9a4d6crd1w205b54pmZ test]# cp -r newDir myDir [root@iZwz9a4d6crd1w205b54pmZ test]# ls myDir 1.txt 2.txt a.txt b.txt

如果dir2目录已存在,则需要使用 cp -r dir1/. dir2

[root@iZwz9a4d6crd1w205b54pmZ test]# mkdir uDir
[root@iZwz9a4d6crd1w205b54pmZ test]# cp -r newDir/. uDir
[root@iZwz9a4d6crd1w205b54pmZ test]# ls uDir
1.txt  2.txt  a.txt  b.txt

只有源文件较目标文件新时复制

命令格式为:cp -u 源文件 目标文件

这个命令很实用,尤其是在更新文件时。如下图所示,只有源文件比目标文件新时,才会将源文件复制给目标文件,否则,及时执行了命令,也不会执行复制。

[root@iZwz9a4d6crd1w205b54pmZ test]# cp -u 1.txt newDir/

文件操作命令 —— find命令

用途:用于查找文件或目录

格式:find [查找范围] [查找条件]

常用查找条件

  • -name:按文件名称查找
  • -size:按文件大小查找
  • -user:按文件属主查找
  • -type:按文件类型查找
[root@iZwz9a4d6crd1w205b54pmZ test]# find . -name "*.txt"
./b.txt
./a.txt
./testDir/1.txt
./my.txt
./myDir/b.txt
./myDir/a.txt
./myDir/1.txt
./myDir/2.txt
[root@iZwz9a4d6crd1w205b54pmZ test]# find . -size +1000000c -print  #查找大于1M的文件


[root@server1 ~]# find test -user root   #查找属主是root的文件
test
test/1.txt


[root@iZwz9a4d6crd1w205b54pmZ test]# find . -ctime -20   #查找最近 20 天内更新过的文件
.
./theDir
./b.txt
./a.txt
./testDir
./testDir/1.txt
./my.txt
./myDir
./myDir/b.txt
./myDir/a.txt
./myDir/1.txt
./myDir/2.txt

压缩及解压缩命令 —— gzip、bzip2

用途:制作压缩文件、解开压缩文件

格式:

gzip  [-9]  文件名...
zip  [-9]  文件名...
gzip  -d  .gz格式的压缩文件
bzip2  -d  *.bz2格式的压缩文件
  • 常用命令选项
-9:表示高压缩比,多在创建压缩包时用
-d:用于解开已经压缩过的文件
[root@maxin ~]# ls newDir
123.txt  1.txt
[root@maxin ~]# gzip newDir/*
[root@maxin ~]# ls newDir
123.txt.gz  1.txt.gz
[root@maxin ~]# gzip -dv newDir/1.txt.gz
newDir/1.txt.gz:          0.0% -- replaced with newDir/1.txt
[root@maxin ~]# ls newDir
123.txt.gz  1.txt

思考:bzip2命令如何使用 ?

打包及压缩命令 —— tar

用途:制作归档文件、释放归档文件 格式:tar [选项]... 归档文件名 源文件或目录 (制作归档文件)

             tar  [选项]...  归档文件名  [-C 目标目录]  (解压归档文件)

常用命令选项

-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压

压缩:

这种格式是使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。可以使用下面的命令去压缩一个目录:

tar -zcvf archive_name.tar.gz directory_to_compress

例:

[root@maxin ~]# ls newDir
123.txt.gz  1.txt
[root@maxin ~]#  tar -zcvf newDir.tar.gz newDir
newDir/
newDir/123.txt.gz
newDir/1.txt

解压缩:

tar -zxvf archive_name.tar.gz

[root@maxin ~]# tar -zxvf newDir.tar.gz
newDir/
newDir/123.txt.gz
newDir/1.txt

上面这个解包命令将会将文档解压在当前目录下面。当然,你也可以用这个命令来更改解包的路径:

tar -zxvf archive_name.tar.gz -C /tmp/extract_here/

例:

[root@maxin ~]# tar -zxvf newDir.tar.gz -C  test
newDir/
newDir/123.txt.gz
newDir/1.txt
[root@maxin ~]# ls test
newDir

思考:如何调用bzip2程序进行压缩或解压 ?

练习1:

在当前目录下,创建测试目录test。

(7)利用ls命令列出文件和目录,确认test目录创建成功。

(8)进入test目录,利用pwd查看当前工作目录。

(9)利用touch命令,在当前目录创建一个新的空文件newfile。

(10)利用cp命令复制系统文件/etc/profile到当前目录下。

(11)复制文件profile到一个新文件profile.bak,作为备份。

(12)用ll命令以长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。


练习2:

find命令的使用。

① 在/var/lib目录下查找所有文件其所有者是games用户的文件。

  1. find /var/lib –user games

② 在/var目录下查找所有文件其所有者是root用户的文件。

  1. find /var –user root

③ 查找所有文件其所有者不是root、bin和student用户,并用长格式显示(如ls –l 的显示结果)。

  1. find / ! –user root -and ! –user bin –and ! –user student –exec ls –l {} \; 2> /dev/null

④ 查找/usr/bin目录下所有大小超过一百万byte的文件,并用长格式显示(如ls –l 的显示结果)。

  1. find /usr/bin –size +1000000c -exec ls -l 2> /dev/null

⑤ 对/etc/mail目录下的所有文件使用file命令。

  1. find /etc/mail –exec file {} \; 2 > /dev/null

⑥ 查找/tmp目录下属于student的所有普通文件,这些文件的修改时间为5天以前,查询结果用长格式显示(如ls –l 的显示结果)。

  1. find /tmp –user student –and –mmin +5 –and –type f –exec ls {} \; 2> /dev/null

⑦ 对于查到的上述文件,用-ok选项删除。

  1. find /tmp –user student –and –mmin +5 –and –type f –ok rm {} \;