天天看点

RHEL6基础之七文件(夹)基本操作命令

文件(夹)查看类命令

ls--显示指定目录下内容

说明:ls 显示结果以不同的颜色来区分文件类别。蓝色代表目录,灰色代表普通文件,绿色代表可执行文件,红色代表压缩文件,浅蓝色代表链接文件。

-a---显示所有内容,包括隐藏文件

<a href="http://blog.51cto.com/attachment/201309/144553371.png" target="_blank"></a>

说明:在Linux系统中,以“.”开头的就是隐藏文件或隐藏目录。

说明:ls -l命令可以简写成ll,

输出的信息共分为7组:

文件类别和文件权限、链接数或子目录个数、文件所有者、文件所属组、文件大小(单位为字节B)、文件创建或修改时间、文件名。

文件类别:第一组前1位表示文件类别,“-”代表普通文件,“d”代表目录,“l”代表符号链接,“c”代表字符设备,“b”代表块设备

文件权限:第一组后9位表示文件权限,前3位为user、中间3位为group、后三位为other的权限

-d---显示目录本身的属性而不是目录中的内容。

1

2

3

4

5

<code>[root@localhost ~]</code><code># ls -ld /home</code>

<code>drwxr-xr-x. 4 root root 4096 9月  22 10:41 </code><code>/home</code>

<code>[root@localhost ~]</code><code># ls -d /home</code>

<code>/home</code>

<code>[root@localhost ~]</code><code>#</code>

-h---以K、M、G等单位显示文件大小(默认为字节)

6

7

<code>[root@localhost ~]</code><code># ls -h /home</code>

<code>justin  lost+found</code>

<code>[root@localhost ~]</code><code># ls -lh /home</code>

<code>总用量 20K</code>

<code>drwx------. 27 justin justin 4.0K 9月  22 13:19 justin</code>

<code>drwx------.  2 root   root    16K 9月  18 15:30 lost+found</code>

-R---若目录下有档案,也将档案依序列出

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<code>[root@localhost ~]</code><code># ls -lR /home</code>

<code>/home</code><code>:</code>

<code>总用量 20</code>

<code>drwx------. 27 justin justin  4096 9月  22 13:19 justin</code>

<code>drwx------.  2 root   root   16384 9月  18 15:30 lost+found</code>

<code>/home/justin</code><code>:</code>

<code>总用量 32</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 公共的</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 模板</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 视频</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 图片</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 文档</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 下载</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 音乐</code>

<code>drwxr-xr-x. 2 justin justin 4096 9月  22 10:49 桌面</code>

<code>/home/justin/</code><code>公共的:</code>

<code>总用量 0</code>

<code>/home/justin/</code><code>模板:</code>

<code>/home/justin/</code><code>视频:</code>

<code>/home/justin/</code><code>图片:</code>

<code>/home/justin/</code><code>文档:</code>

<code>/home/justin/</code><code>下载:</code>

<code>/home/justin/</code><code>音乐:</code>

<code>/home/justin/</code><code>桌面:</code>

<code>/home/lost</code><code>+found:</code>

-t---将档案按照建立时间的先后次序列出

<code>[root@localhost ~]</code><code># ls -l /home</code>

<code>-rw-r--r--.  1 root   root       0 9月  22 15:21 t</code>

<code>[root@localhost ~]</code><code># ls -lt /home</code>

说明:ls命令还可以结合通配符“?”或“*”一起使用,问号“?”可以匹配文件名中的一个任意字符,而“*”可以匹配文件名中的任意多个字符。这两个通配符同样也适用于Shell环境中的其他大多数命令。

<code>gssapi_mech.conf         popt.d                        xml</code>

<code>gtk-2.0                  portreserve                   yp.conf</code>

<code>hal                      postfix                       yum</code>

<code>host.conf                ppp                           yum.conf</code>

<code>hosts                    prelink.cache                 yum.repos.d</code>

<code>hosts.allow              prelink.conf</code>

<code>hosts.deny               prelink.conf.d</code>

<code>[root@localhost etc]</code><code># ll -d /etc/po*.d</code>

<code>drwxr-xr-x. 2 root root 4096 1月  11 2010 </code><code>/etc/popt</code><code>.d</code>

<code>[root@localhost etc]</code><code># ll -d /etc/po?.d</code>

<code>ls</code><code>: 无法访问</code><code>/etc/po</code><code>?.d: 没有那个文件或目录</code>

<code>[root@localhost etc]</code><code>#</code>

du---显示文件或目录大小

-h或--human-readable---以K,M,G为单位,提高信息的可读性

<code>[root@localhost src]</code><code># du -h nagios-3.5.0.tar.gz</code>

<code>1.8M    nagios-3.5.0.</code><code>tar</code><code>.gz</code>

<code>[root@localhost src]</code><code># du nagios-3.5.0.tar.gz</code>

<code>1748    nagios-3.5.0.</code><code>tar</code><code>.gz</code>

<code>[root@localhost src]</code><code>#</code>

-a---显示全部目录和其次目录下的每个档案所占的磁盘空间

-b或-bytes---显示目录或文件大小时,以byte为单位

<code>[root@localhost </code><code>local</code><code>]</code><code># du -b src/nagios-3.5.0.tar.gz</code>

<code>1789376 src</code><code>/nagios-3</code><code>.5.0.</code><code>tar</code><code>.gz</code>

<code>[root@localhost </code><code>local</code><code>]</code><code>#</code>

-c或--total---显示每个目录或文件的大小外,同时也显示所有目录或文件的总和

-m或--megabytes---以1MB为单位

-s---只显示各档案大小的总合

<code>[root@localhost </code><code>local</code><code>]</code><code># du -sh src/</code>

<code>41M src/</code>

-x---只计算同属同一个档案系统的档案

-L---计算所有的档案大小

df---显示档案系统的状况;主要用来了解系统中已经挂载的各个文件系统的磁盘使用情况

-h 显示更易读的容量单位

-T 显示文件系统的类型

<code>[root@localhost ~]</code><code># df -Th</code>

<code>文件系统    类型      容量  已用  可用 已用%% 挂载点</code>

<code>/dev/sda2ext4</code>    <code>9.9G  2.6G  6.9G  28% /</code>

<code>tmpfs        tmpfs    504M  112K  504M   1% </code><code>/dev/shm</code>

<code>/dev/sda1ext4</code>    <code>194M   27M  158M  15% </code><code>/boot</code>

<code>/dev/sda5ext4</code>    <code>7.7G  147M  7.2G   2% </code><code>/home</code>

<code>/dev/sr0iso9660</code>    <code>2.9G  2.9G     0 100% </code><code>/media/RHEL_6</code><code>.3 i386 Disc 1</code>

file---查看文件类型

<code>[root@localhost home]</code><code># file justin/</code>

<code>justin/: directory</code>

<code>[root@localhost home]</code><code># file justin1</code>

<code>justin1: empty</code>

<code>[root@localhost ~]</code><code># file install.log</code>

<code>install</code><code>.log: UTF-8 Unicode text</code>

说明:file命令用于查看文件的类型,可以根据文件的内部存储结构来进行判别,而不根据文件的扩展名来进行判别。在Linux系统中,文件扩展名与文件类型没有绝对的关系。

创建文件名中可以带有空格,但需要用引号引起来,不建议使用空格

文件内容查看

cat---显示文件内容

<code>[root@localhost log]</code><code># cat /var/log/messages</code>

说明:cat在显示文本文件的内容时不进行停顿,对于内容较长的文件,在快速滚屏显示之后,只有最后一页的文件内容保留在屏幕中显示,因此cat不适合查看长文件。

more---分页显示文件内容

-num--- 一次显示的行数 

-s ---当遇到有连续两行以上的空白行,就代换为一行的空白行 

+num ---从第 num 行开始显示

<code>[root@localhost log]</code><code># more -5s /var/log/messages</code>

<code>Sep 22 10:36:06 localhost kernel: imklog 5.8.10, log </code><code>source</code> <code>= </code><code>/proc/kmsg</code> <code>started.</code>

<code>Sep 22 10:36:06 localhost rsyslogd: [origin software=</code><code>"rsyslogd"</code> <code>swVersion=</code><code>"5.8.10"</code> <code>x-pid</code>

<code>=</code><code>"1323"</code> <code>x-info=</code><code>"http://www.rsyslog.com"</code><code>] start</code>

<code>Sep 22 10:36:06 localhost kernel: Initializing cgroup subsys cpuset</code>

<code>Sep 22 10:36:06 localhost kernel: Initializing cgroup subsys cpu</code>

<code>--More--(0%)</code>

说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,空白键(space):显示下一页,b 键:显示上一页,q 键 :退出

less----分页显示文件内容

说明:less命令的用法与more命令类似,它们之间的区别是当文件内容显示到文件尾时,more命令会自动退出阅读环境,而less命令不自动退出,用户仍然可以利用上下键来卷动文件,这样更加有利于对文件内容的反复阅读。当要结束浏览时,要在less命令的提示符“:”后按Q键退出

head---查看文件开头部分的内容

-n 指定显示的具体行数。

<code>[root@localhost ~]</code><code># head -5 /etc/passwd</code>

<code>root:x:0:0:root:</code><code>/root</code><code>:</code><code>/bin/bash</code>

<code>bin:x:1:1:bin:</code><code>/bin</code><code>:</code><code>/sbin/nologin</code>

<code>daemon:x:2:2:daemon:</code><code>/sbin</code><code>:</code><code>/sbin/nologin</code>

<code>adm:x:3:4:adm:</code><code>/var/adm</code><code>:</code><code>/sbin/nologin</code>

<code>lp:x:4:7:lp:</code><code>/var/spool/lpd</code><code>:</code><code>/sbin/nologin</code>

说明:默认情况下,head显示前10行内容

tail---查看文件末尾部分的内容

<code>[root@localhost ~]</code><code># tail -5 /etc/passwd</code>

<code>nfsnobody:x:65534:65534:Anonymous NFS User:</code><code>/var/lib/nfs</code><code>:</code><code>/sbin/nologin</code>

<code>abrt:x:173:173::</code><code>/etc/abrt</code><code>:</code><code>/sbin/nologin</code>

<code>sshd:x:74:74:Privilege-separated SSH:</code><code>/var/empty/sshd</code><code>:</code><code>/sbin/nologin</code>

<code>tcpdump:x:72:72::/:</code><code>/sbin/nologin</code>

<code>justin:x:500:500:justin_peng:</code><code>/home/justin</code><code>:</code><code>/bin/bash</code>

说明:tail命令用法与head命令类似

paste---用于合并文件的列,将多行合并为一行

-d&lt;间隔字符&gt;或--delimiters=&lt;间隔字符&gt;  用指定的间隔字符取代跳格字符。

-s或--serial  将一个文件中的多行数据合并为一行进行显示。只是将文件的内容调整显示方式,并不会改变原文件的内容格式。

<code>[root@localhost ~]</code><code># cat &gt; 1.txt &lt;&lt; EOF</code>

<code>&gt; 1</code>

<code>&gt; 11</code>

<code>&gt; 111</code>

<code>&gt; EOF</code>

<code>[root@localhost ~]</code><code># cat &gt; 2.txt &lt;&lt; eof</code>

<code>&gt; 2</code>

<code>&gt; 22</code>

<code>&gt; 222</code>

<code>&gt; eof</code>

<code>[root@localhost ~]</code><code># cat &gt; 3.txt &lt;&lt; eof</code>

<code>&gt; 3</code>

<code>&gt; 33</code>

<code>&gt; 333</code>

<code>[root@localhost ~]</code><code># paste 1.txt 2.txt 3.txt </code>

<code>1   2   3</code>

<code>11  22  33</code>

<code>111 222 333</code>

<code>[root@localhost ~]</code><code># cat &gt; test.txt &lt;&lt; EOF</code>

<code>&gt; 001</code>

<code>&gt; 002</code>

<code>&gt; 003</code>

<code>&gt; 004</code>

<code>&gt; 005</code>

<code>&gt; 006</code>

<code>&gt; 007</code>

<code>[root@localhost ~]</code><code># paste -d " " -s &lt; test.txt </code>

<code>001 002 003 004 005 006 007</code>

<code>[root@localhost ~]</code><code># cat test.txt </code>

<code>001</code>

<code>002</code>

<code>003</code>

<code>004</code>

<code>005</code>

<code>006</code>

<code>007</code>

<code>[root@localhost ~]</code><code># cat test.txt | paste -d " " -s &gt;&gt; test1.txt</code>

<code>[root@localhost ~]</code><code># cat test1.txt </code>

创建文件(夹)命令

touch---改变档案的时间记录,档案不存在则创建一个空文件,通常用来创建一个文件

<code>[root@localhost home]</code><code># touch file1 file2</code>

<code>[root@localhost home]</code><code># ls</code>

<code>file1  file2  justin  lost+found  t</code>

<code>[root@localhost home]</code><code>#</code>

<code>[root@justin </code><code>touch</code><code>]</code><code># touch file{1..5}</code>

<code>[root@justin </code><code>touch</code><code>]</code><code># ls</code>

<code>file1  file2  file3  file4  file5</code>

<code>[root@justin </code><code>touch</code><code>]</code><code># touch file{6...9}</code>

<code>file1  file2  file3  file4  file5  </code><code>file</code><code>{6...9}</code>

<code>[root@Zabbix zabbix]</code><code># mkdir dir{1..5}</code>

<code>[root@Zabbix zabbix]</code><code># ls</code>

<code>dir1  dir3  dir5   file10  file12  file14  file16  file18  file2   file3  file5  file7  file9</code>

<code>dir2  dir4  file1  file11  file13  file15  file17  file19  file20  file4  file6  file8</code>

<code>[root@Zabbix zabbix]</code><code># touch dir{1..5}/file{1..20}</code>

<code>[root@Zabbix zabbix]</code><code>#</code>

说明:在实际使用中经常用于创建新的测试文件。使用文件名作为参数,可以同时创建多个文件,切中间只能是两个点号。当目标文件已经存在时,将更新该文件的时间标记,否则将创建指定名称的空文件。

-a   或--time=atime或--time=access或--time=use  只更改存取时间。

-m   或--time=mtime或--time=modify  只更改变动时间。

-c   或--no-create  假如目的档案不存在,不会建立新的档

-r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。

-t  使用指定的日期时间,而非现在的时间。    

     [[CC]YY]MMDDhhmm[.SS]     

      这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch   将把年数CCYY限定在1969--2068之内.MM为月数,DD为天将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时 间.由于系统的限制,早于1970年1月1日的时间是错误的。

<code>[root@localhost </code><code>touch</code><code>]</code><code># date</code>

<code>Sat Jan 14 10:54:16 CST 2017</code>

<code>[root@localhost </code><code>touch</code><code>]</code><code># touch test1.txt</code>

<code>[root@localhost </code><code>touch</code><code>]</code><code># touch -t 201610141053 test2.txt </code>

<code>[root@localhost </code><code>touch</code><code>]</code><code># ll</code>

<code>total 0</code>

<code>-rw-r--r-- 1 root root 0 Jan 14 10:54 test1.txt</code>

<code>-rw-r--r-- 1 root root 0 Oct 14 10:53 test2.txt</code>

<code>[root@localhost </code><code>touch</code><code>]</code><code># touch -r test1.txt test2.txt </code>

<code>-rw-r--r-- 1 root root 0 Jan 14 10:54 test2.txt</code>

<code>[root@localhost </code><code>touch</code><code>]</code><code>#</code>

mkdir---Make Directory---创建新的目录

-p 确保目录名称存在,不存在的就建一个。

<code>justin  lost+found  t</code>

<code>[root@localhost home]</code><code># mkdir dir1</code>

<code>[root@localhost home]</code><code># mkdir dir2/dir</code>

<code>mkdir</code><code>: 无法创建目录</code><code>"dir2/dir"</code><code>: 没有那个文件或目录</code>

<code>[root@localhost home]</code><code># mkdir -p dir2/dir</code>

同时创建多级目录

<code>[root@localhost home]</code><code># mkdir -p {dir1,dir2/{dir3,dir4}}</code>

<code>dir1  dir2  justin  lost+found  t</code>

<code>[root@localhost home]</code><code># ls dir2</code>

<code>dir3  dir4</code>

删除文件(夹)命令

rmdir---删除空目录(若目录非空删除中会报错)

-p 当子目录被删除后也成为空目录的话,则顺便一并删除

<code>[root@localhost home]</code><code># mkdir -p {dir1,dir2/dir3}</code>

<code>[root@localhost home]</code><code># rmdir dir1</code>

<code>[root@localhost home]</code><code># rmdir dir2</code>

<code>rmdir</code><code>: 删除 </code><code>"dir2"</code> <code>失败: 目录非空</code>

<code>[root@localhost home]</code><code># rmdir -p dir2/dir3/</code>

rm---删除档案或目录

文件的删除权限是由上级目录决定的,即使一个用户有该文件的删除权限,没有上次目录的写权限也是无法删除该文件

-i 删除前逐一询问确认。

-v 显示删除过程

-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 

-r 将目录及以下档案也逐一删除。

<code>[root@localhost home]</code><code># mkdir -p dir1/dir2</code>

<code>[root@localhost home]</code><code># rm -r dir1/</code>

<code>rm</code><code>:是否进入目录</code><code>"dir1"</code><code>? y</code>

<code>rm</code><code>:是否删除目录 </code><code>"dir1/dir2"</code><code>?y</code>

<code>rm</code><code>:是否删除目录 </code><code>"dir1"</code><code>?y</code>

Linux 删除除某个文件之外的所有文件

<code>[root@APP </code><code>rm</code><code>]</code><code># ls</code>

<code>sda  SDa  sdaa  SDaa  sdaaa  sdaaaa  SDaaaa  sdaab  sdaz</code>

<code>[root@APP </code><code>rm</code><code>]</code><code># ls |grep -v SD|xargs rm -f</code>

<code>SDa  SDaa  SDaaaa</code>

<code>[root@APP </code><code>rm</code><code>]</code><code>#</code>

还有一种更为方便的方法,需要卡其BashShell的extglob选项,

<code>[root@APP </code><code>rm</code><code>]</code><code># touch sda  SDa  sdaa  SDaa  sdaaa  sdaaaa  SDaaaa  sdaab  sdaz</code>

<code>[root@APP </code><code>rm</code><code>]</code><code># rm -f !(SD*)</code>

<code>-</code><code>bash</code><code>: !: event not found</code>

<code>[root@APP </code><code>rm</code><code>]</code><code># shopt -s extglob</code>

<code>[root@APP </code><code>rm</code><code>]</code><code># rm -rf !(SD)</code>

如果出现-bash: !: event not found表示当前系统未开启,

                  列出所有选项:shopt -p 

                  列出所有打开的选项:shopt -s 

                  开启extglob命令:shopt -s extglob 

                  列出所有关闭的选项:shopt -u 

                  关闭extglob命令:shopt -u extglob

开启之后,以下5个模式匹配操作符将被识别:

?(pattern-list) - 所给模式匹配0次或1次; 

*(pattern-list) - 所给模式匹配0次以上包括0次;

+(pattern-list) - 所给模式匹配1次以上包括1次; 

@(pattern-list) - 所给模式仅仅匹配1次;

!(pattern-list) - 不匹配括号内的所给模式。 !():与@()相反

-bash: /bin/rm: Argument list too long

<code>[root@mail cur]</code><code># rm -rf *</code>

<code>-</code><code>bash</code><code>: </code><code>/bin/rm</code><code>: Argument list too long</code>

<code>[root@mail new]</code><code># ll |wc -l</code>

<code>221993</code>

<code>[root@mail cur]</code><code># ls | xargs -n 10 rm -fr ls</code>

<code>1</code>

<code>[root@mail new]</code><code>#</code>

文件数达到21万多,rm -f的参数过多,输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除

linux中删除文件名带横杠的文件的方法

rm  -filename (其中“-filename”为文件名)这时系统会报错,提示:无效的选项。这是因为shell把“-”后的文件名当做前面rm命令的参数选项了。

解决方法:

在文件名之前加上“--”,

如:rm -- -filename

这是因为shell把--之后的参数当做文件名来对待,禁止把-filename当做参数选项来解释,所以能够正确的执行shell命令。 

注:可以在shell命令行中输入man sh来参考shell对“--”的说明。

清空或删除大文件内容的方法

1、使用重定向的方法

<code>[root@localhost ~]</code><code># dd if=/dev/zero of=test bs=1M count=1024</code>

<code>[root@localhost ~]</code><code># du -sh test </code>

<code>1.1G    </code><code>test</code>

<code>[root@localhost ~]</code><code># &gt; test </code>

<code>0   </code><code>test</code>

2、使用true命令重定向清空文件

<code>1024+0 records </code><code>in</code>

<code>1024+0 records out</code>

<code>1073741824 bytes (1.1 GB) copied, 19.9467 s, 53.8 MB</code><code>/s</code>

<code>[root@localhost ~]</code><code># true &gt; test </code>

3、使用echo命令清空文件

<code>1073741824 bytes (1.1 GB) copied, 22.563 s, 47.6 MB</code><code>/s</code>

<code>[root@localhost ~]</code><code># echo "" &gt; test </code>

<code>4.0K    </code><code>test</code>

<code>[root@localhost ~]</code><code># echo -n "" &gt; test #要加上"-n"参数,默认情况下会"\n",也就是回车符</code>

4、使用truncate命令清空文件

<code>1073741824 bytes (1.1 GB) copied, 22.0746 s, 48.6 MB</code><code>/s</code>

<code>[root@localhost ~]</code><code># truncate -s 0 test #-s参数用来设定文件的大小,清空文件,就设定为0;</code>

本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1300532,如需转载请自行联系原作者

继续阅读