Linux文件管理类命令

管理文件相关命令

ls

查看文件列表

stat

查看文件属性

file

查看文件类型

touch

创建文件,修改文件时间戳

cp

复制文件或目录

mv

移动文件或目录

rm

删除文件或目录

ln

创建文件硬链接

ln -s

创建文件软链接

ls命令:

ls [OPTION] ... [FILE] ...

选项:

-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)

-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

-r 将文件以相反次序显示(原定依英文字母次序)

-t 将文件依建立时间之先后次序列出

-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)

-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

-R 若目录下有文件,则以下之文件亦皆依序列出

实例:    

列出根目录(/etc)下的所有目录:
将 /bin 目录以下所有目录及文件详细资料列出 :

[root@localhost ~]# ls -lR /bin
lrwxrwxrwx. 1 root root 7 Dec  2 00:09 /bin -> usr/bin
列出目前工作目录下所有文件及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :

ls -AF /etc

 

stat命令

stat [OPTION] ... [FILE] ...

实例:查看testfile的文件的indoce内容

# stat testfile
    File: ‘testfile’
    Size: 0         Blocks: 0         IO Block: 4096         regular         empty         file
    Device: fd00h/64768d    Inode: 100675864 Links: 1
    Access: (0644/-rw-r--r--)     Uid: ( 0/ root)     Gid: ( 0/ root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2019-12-08 13:16:50.949969456 +0800
    Modify: 2019-12-08 13:16:50.949969456 +0800
    Change: 2019-12-08 13:16:50.949969456 +0800

file命令

file [OPTION][-f FILE][-m...][文件或目录...]

参数

-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f FILE  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L  直接显示符号连接所指向的文件的类别。
-m   指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。
[文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

实例:

显示文件类型:

[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text

[root@localhost ~]# file -b install.log      <== 不显示文件名称
UTF-8 Unicode text

[root@localhost ~]# file -i install.log      <== 显示MIME类别。
install.log: text/plain; charset=utf-8

[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8
显示符号链接的文件类型

[root@localhost ~]# ls -l /var/mail
lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail

[root@localhost ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'

[root@localhost ~]# file -L /var/mail
/var/mail: directory

[root@localhost ~]# file /var/spool/mail
/var/spool/mail: directory

[root@localhost ~]# file -L /var/spool/mail
/var/spool/mail: directory

 touch命令

touch [OPTION]... FILE...

选项

-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。

实例

[root@localhost ~]# ls -l testfile   #查看文件当前时间
-rw-r--r--. 1 root root 0 Dec  8 13:27 testfile

[root@localhost ~]# touch testfile #修改文件时间属性,如果文件不存在则创建文件

[root@localhost ~]# ls -l testfile  #查看更改后的时间
-rw-r--r--. 1 root root 0 Dec  8 13:28 testfile

cp命令

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

选项

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件

实例


[root@localhost ~]# tree /var/log/
/var/log/
├── anaconda
│   ├── anaconda.log
│   ├── ifcfg.log
│   ├── journal.log
│   ├── ks-script-j6_QRs.log
│   ├── packaging.log
│   ├── program.log
│   ├── storage.log
│   ├── syslog
│   └── X.log
├── audit
│   └── audit.log
├── boot.log
├── btmp
├── chrony
├── cron
├── dmesg
├── dmesg.old
├── firewalld
├── grubby_prune_debug
├── lastlog
├── maillog
├── messages
├── rhsm
├── secure
├── spooler
├── tallylog
├── tuned
│   └── tuned.log
├── vmware-network.1.log
├── vmware-network.2.log
├── vmware-network.log
├── vmware-vgauthsvc.log.0
├── vmware-vmsvc.log
├── wtmp
└── yum.log

cp -r /var/log /tmp/ #保留log目录的层级关系复制到/tmp下

[root@localhost ~]# tree /tmp/log/
/tmp/log/
├── anaconda
│   ├── anaconda.log
│   ├── ifcfg.log
│   ├── journal.log
│   ├── ks-script-j6_QRs.log
│   ├── packaging.log
│   ├── program.log
│   ├── storage.log
│   ├── syslog
│   └── X.log
├── audit
│   └── audit.log
├── boot.log
├── btmp
├── chrony
├── cron
├── dmesg
├── dmesg.old
├── firewalld
├── grubby_prune_debug
├── lastlog
├── maillog
├── messages
├── rhsm
├── secure
├── spooler
├── tallylog
├── tuned
│   └── tuned.log
├── vmware-network.1.log
├── vmware-network.2.log
├── vmware-network.log
├── vmware-vgauthsvc.log.0
├── vmware-vmsvc.log
├── wtmp
└── yum.log

mv命令

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

选项

-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;

实例

将文件 aaa 更名为 bbb :
[root@localhost ~]# touch aaa
[root@localhost ~]# mv aaa bbb

将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。
[root@localhost ~]# ls
bbb  info
[root@localhost ~]# mv info/ log
[root@localhost ~]# ls
bbb  log

再如将/tmp/log/下的所有文件和目录移到当前目录下,命令行为:

[root@localhost ~]# mv /tmp/log/* .
[root@localhost ~]# ls
anaconda  bbb       btmp    cron   dmesg.old  grubby_prune_debug  log      messages  secure   tallylog  vmware-network.1.log  vmware-network.log      vmware-vmsvc.log  yum.log
audit     boot.log  chrony  dmesg  firewalld  lastlog             maillog  rhsm      spooler  tuned     vmware-network.2.log  vmware-vgauthsvc.log.0  wtmp

rm命令

rm [OPTION] FILE...

选项

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

-f 强制删除,不提示用户。

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

实例

#询问删除
[root@localhost ~]# rm -i messages
rm: remove regular file ‘messages’?

#删除目录
[root@localhost ~]# rm -r log/
rm: remove directory ‘log/’?  y

#强制删除目录或文件,不提示
[root@localhost ~]# rm -rf log/
[root@localhost ~]# rm -rf messages

 ln命令:

  详情查看https://www.cnblogs.com/stationing/p/11976042.html文章

 
posted @ 2019-12-10 15:20  Lyvin.zhang  阅读(275)  评论(0编辑  收藏  举报