Linux 文件和目录管理之列出、删除、复制、移动及改名
Linux 文件和目录管理之列出、删除、复制、移动及改名
作者:北南南北
来自:LinuxSir.Org
摘要:Linux 命令行模式下来操作文件管理还是比较重要的,虽然目前在Linux桌面上能完成大部份的文件管理工作,但就效率来说,还是命令行模式更为强大。最重要的是在文本操作界面和图形界面通用。如果您是服务器管理人员,您能体会到命令行下的文件管理工具是何等重要。本文涉及了目录和文件的显示ls、复制cp、移动 mv、删除rm、rmdir、目录的创建mkdir以及用echo、touch等工具创建空文件... ... 内容;
目录
0、关于路径的理解;
1、列文件或目录的信息工具 ls 和dir;
1.1 ls 的基础语法和参数;
1.2 ls 的参数示例应用;
1.21 列出目录下所有文件,包含或不包含隐藏文件,-a 参数及-l参数的运用;
1.22 仅查看目录的属性的-d参数的运用示例;
1.23 查看文件或目录的inode节点,-i参数的运用;
1.24 关于排序的参数的应用;
1.25 递归显示目录的文件,-R参数的应用;
1.26 关于ls 输出内容在终端显示颜色的参数 --color;
1.27 ls的-F参数的示例;
1.3 通配符在ls命令中的应用;
1.4 获得ls 的帮助;
2、移动文件或目录的命令 mv ;
3、文件或目录的复制工具cp ;
3.1 cp的语法和参数
3.2 示例说明cp应用;
3.21 参数-i的示例;
3.22 参数-a的示例及说明;
3.23 参数-b的示例应用;
3.24 把多个文件(或目录)复制到目录目录中示例;
3.25 复制目录时-R参数的应用;
4、 目录创建工具mkdir和删除空目录工具rmdir;
4.1 mkdir 是目录创建工具;
4.11 mkdir语法格式及参数;
4.12 参数 -p 的应用示例
4.2 删除空目录工具 rmdir 和rm ;
5、创建一个空文件的工具:用 touch、echo、cat等工具;
6、删除文件工具rm;
7、修改文件名工具 mv
8、关于本文;
9、后记;
10、参考文档;
11、相关文档;
++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++
0、关于路径的理解;
请参考:
《关于Linux 文件系统中路径的理解》
1、列文件或目录的信息工具 ls或dir;
ls 命令可以用于显示目录的内容,也可以显示文件的属性,比如节点、文件种类、权限、拥有者、大小、创建时间等;在目前最新版本的Linux中dir和ls命令的用法是一样的;有兴趣的不仿尝试一下;
1.1 ls 的基础语法和参数;
语法格式:
#ls [参数] [目录或文件名]
-a 显示所有文件,包含隐藏文件;包括“.“和“..“-A 显示所有文件,包含隐藏文件,不包括“.“和“..“目录;-B 不列出文件名以~结尾的文件;-C 按列列出文件;-d 仅可以查看目录的属性参数及信息;-F 这个参数加上后,能给目录添加上/,给可执行文件加上*,给符号链接加上@ 等等,来标记文件名,目的是让用户方便查看;-l 长格式输出-h 习惯人们可阅读的方式来显示文件或目录的大小,比如K、M或G等;-p 在目录的后面附加/标记;-r 逆序列出文件;-t 按文件最后访问(或修改)的时间排序,最新的排在最前面;-U 按原始排序,-L 递归显示,也就是说,当我们列某个目录的下的所有文件和目录时,能把它的下级目录的内容显示出来。--help 获得帮助;
[root@localhost ~]# pwd/root
#ls -la [目录名]
[root@localhost ~]# pwd/root[root@localhost ~]# ls -la
#ls -l 目录
[root@localhost ~]# ls -l /root/总计 13968-rw-r--r-- 1 root root 0 04-19 14:09 123.txt-rw------- 1 root root 1375 03-16 08:55 anaconda-ks.cfg-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale-rw-r--r-- 1 root root 5423 03-16 08:52 install.log.syslog-rw-r--r-- 1 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpmlrwxrwxrwx 1 root root 33 04-19 11:27 kernel.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpmdrwxr-xr-x 2 1000 users 4096 04-04 23:30 mkuml-2004.07.17-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2drwxr-xr-x 2 root root 4096 04-19 10:53 mydir-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log-rw-r--r-- 1 root root 0 04-19 14:10 plinux.txtdrwxr-xr-x 2 root root 4096 03-17 04:25 Public-rw-r--r-- 1 root root 613 03-26 18:41 upgrade.log-rw-r--r-- 1 root root 0 03-26 18:39 upgrade.log.sysloglrwxrwxrwx 1 root root 6 04-19 11:17 yourdir -> mydir/
[root@localhost ~]# ls /root
[root@localhost ~]# ls -ld /etc /boot 注:查看/etc和/boot目录的信息;drwxr-xr-x 4 root root 4096 04-11 16:22 /bootdrwxr-xr-x 108 root root 12288 04-20 12:36 /etc
[root@localhost ~]# ls -li /root
[root@localhost ~]# ls -li kernel*2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel00.rpm2408270 lrwxrwxrwx 1 root root 33 04-19 14:56 kernel1.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel.rpm
[root@localhost ~]# ls -li kernel*2408272 -rw-r--r-- 1 root root 14087155 04-19 16:05 kernel002.rpm2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel00.rpm2408270 lrwxrwxrwx 1 root root 33 04-19 14:56 kernel1.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel.rpm
[root@localhost ~]# ls123.txt fonts.scale kernel myinstall.log upgrade.loganaconda-ks.cfg install.log.syslog mkuml-2004.07.17-ananas.tar.bz2 plinux.txt upgrade.log.syslog
[root@localhost ~]# ls -lS /root
[root@localhost ~]# ls -lS总计 180-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log-rw-r--r-- 1 root root 5423 03-16 08:52 install.log.syslogdrwxr-xr-x 2 root root 4096 04-19 20:04 kernel-rw------- 1 root root 1375 04-19 15:04 anaconda-ks.cfg-rw-r--r-- 1 root root 613 03-26 18:41 upgrade.log-rw-r--r-- 1 root root 21 04-19 15:06 123.txt-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale-rw-r--r-- 1 root root 0 04-19 14:10 plinux.txt-rw-r--r-- 1 root root 0 03-26 18:39 upgrade.log.syslog
[root@localhost ~]# ls -lr总计 180-rw-r--r-- 1 root root 0 03-26 18:39 upgrade.log.syslog-rw-r--r-- 1 root root 613 03-26 18:41 upgrade.log-rw-r--r-- 1 root root 0 04-19 14:10 plinux.txt-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2drwxr-xr-x 2 root root 4096 04-19 20:04 kernel-rw-r--r-- 1 root root 5423 03-16 08:52 install.log.syslog-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale-rw------- 1 root root 1375 04-19 15:04 anaconda-ks.cfg-rw-r--r-- 1 root root 21 04-19 15:06 123.txt
[root@localhost ~]# ls -lt总计 180drwxr-xr-x 2 root root 4096 04-19 20:04 kernel-rw-r--r-- 1 root root 21 04-19 15:06 123.txt-rw------- 1 root root 1375 04-19 15:04 anaconda-ks.cfg-rw-r--r-- 1 root root 0 04-19 14:10 plinux.txt-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale-rw-r--r-- 1 root root 613 03-26 18:41 upgrade.log-rw-r--r-- 1 root root 0 03-26 18:39 upgrade.log.syslog-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log-rw-r--r-- 1 root root 5423 03-16 08:52 install.log.syslog
[root@localhost ~]# ls -lR /
--color=never 表示输出输出没有彩色--color=auto 表示自动--color=always 表示输出内容有彩色
[root@localhost ~]# ls -la --color=never[root@localhost ~]# ls -la --color=any[root@localhost ~]# ls -la --color=always
alias ls="ls --color=always"
[root@localhost ~]# ls -Fcrondw.sh* kernel/ mkuml-2004.07.17-ananas.tar.bz2 openQreadme.txt@ sun.txt upgrade.log youdir/
[root@localhost ~]# ls -lF总计 92-rwxr-xr-x 1 root root 0 04-20 14:18 crondw.sh*drwxr-xr-x 3 root root 4096 04-20 14:17 kernel/-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2lrwxrwxrwx 1 root root 7 04-20 14:18 openQreadme.txt -> sun.txt-rw-r--r-- 1 root root 11 04-20 14:17 sun.txt-rw-r--r-- 1 root root 613 03-26 18:41 upgrade.logdrwxr-xr-x 6 root root 4096 04-20 14:17 youdir/
[root@localhost ~]# ls /root/k*kernel002.rpm kernel00.rpm kernel1.rpm kernel-2.6.15-1.2025_FC5.i686.rpm kernel.rpm
[root@localhost ~]# ls [0-9]*123.txt 234.txt 2kexe.txt 6mns.doc
[root@localhost ~]# ls *.t?t123.txt 234.txt 2kexe.txt 333.tot plinux.txt
[root@localhost ~]# ls --help[root@localhost ~]# man ls[root@localhost ~]# info ls
#mv file1 file2 注:把file1移动到file2,如果file2不存在,则创建file2文件名;#mv file1 dir 注:把一个文件移动到一个事实存在的目录;#mv dir1 dir2 移动目录dir1 到 dir2 ,如果dir2不存在,则创建它;#mv file1 file2 file3 ... ... dir 移动file1、file2、file3等多个文件到dir目录中;#mv dir1 dir2 ... ... dirn 注:移动目录dir1和dir2等多个目录到dirn目录中
[root@localhost ~]# mv -i 123.txt 234.txt
* 代表0个或多个字符[]内部包括任何字符? 任何单个字符
[root@localhost ~]# pwd/root[root@localhost ~]# mv [0-9]* tmp/[root@localhost ~]# ls -lh tmp/总计 4.0K-rw-r--r-- 1 root root 21 04-19 15:06 234.txt-rw-r--r-- 1 root root 0 04-19 22:23 2kexe.txt-rw-r--r-- 1 root root 0 04-19 22:25 333.tot-rw-r--r-- 1 root root 0 04-19 22:23 6mns.doc
#cp [参数选项] 源文件或目录 目标文件或目录注:参数是可选的,常用参数比如 -r,-R,-p,-i ;
-a 等同于-dpR参数一起使用;在复制过程中尽可能保留源文件或目录的属性;-b 给被覆盖的文件做备份。比如我们把file1 复制到file2时,如果file2存在,我们把file2覆盖掉,用这个参数就能同时生成一个file2~的文件,注意文件名后有~结尾-d 不间接引用符号链接,保持源文件和目标文件之间的硬链接关系;-f 删除已存在的目标文件;-i 覆盖已存在的目标文件之前给出警告提示,这是人机交互的选项;-l 建立文件硬链接,而不是复制;-p 保存源文件或目录的最后修改时间和模式,比如要保持目标目录或文件的属主、组、权限和最后访问(或修改)时间;-R 复制目录时,包括淅目录下所有的子目录和文件;-s 建立源文件的符号链接,而不是复制源文件。源文件名必须用绝对路径;-r 复制目录时,包括淅目录下所有的子目录和文件;-r选项不同于-R之处在于 尝试打开目的地文件前先删除已存在的目的地文件-i 人机交互模式,显法覆盖已存在的文件或目录的警告信息;-v 在复制之前,输出每个文件的名字;--help 查看帮助 ;
[root@localhost ~]# lsanaconda-ks.cfg install.log.syslog Kernel.rpm mydir Plist upgrade.log youdirfonts.scale kernel mkuml-2004.07.17-ananas.tar.bz2 plinux.txt sun upgrade.log.syslog[root@localhost ~]# pwd/root[root@localhost ~]# cp -i Kernel.rpm Plistcp:是否覆盖“Plist”? y
[root@localhost ~]# cp -a mydir youdir
[root@localhost ~]# cp fonts.scale fonts.dir 把一个文件复制为另一个文件;[root@localhost ~]# cp -bi fonts.scale fonts.dir
[root@localhost ~]# ls -lh fonts.*-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir~ 注:-b参数运用的效果就是生成已存在目标文件的覆盖之前备份。-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale
[root@localhost ~]# pwd 注:判断用户所处的位置,也就是所处的目录;/root[root@localhost ~]# mv fonts.dir Kernel.rpm Plist sun/[root@localhost ~]# ls sun/fonts.dir Kernel.rpm Plist
[root@localhost ~]# cp -R mydir medir 注:如果medir目录不存在,则创建medir目录,并且medir目录中的内容和mydir中的一样;
#mkdir [参数选项] 目录
[root@localhost ~]# mkdir -p linuxsir/sirdoc/redhat
[root@localhost ~]# mkdir -m 644 sundir[root@localhost ~]# mkdir -m 755 moondir[root@localhost ~]# mkdir -m 000 beinandir[root@localhost ~]# ls -ld sundir moondir beinandird--------- 2 root root 4096 04-20 11:01 beinandirdrwxr-xr-x 2 root root 4096 04-20 11:01 moondirdrw-r--r-- 2 root root 4096 04-20 11:00 sundir
#rmdir [参数] 目录
[root@localhost ~]# mkdir -p linuxsir/sirdoc/redhat/
[root@localhost ~]# rmdir -p linuxsir/sirdoc/redhat/ 注:删除linuxsir目录,要用到参数-p
[root@localhost ~]# ls linuxsir 注:检查一下是不是还有这个目录?ls: linuxsir: 没有那个文件或目录
[root@localhost ~]# ls -lh sun/ 注:这是sun目录,里面有内容;总计 28K-rw------- 1 root root 1.4K 04-19 15:04 anaconda-ks.cfg-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale-rw-r--r-- 1 root root 5.3K 03-16 08:52 install.log.syslog-rw-r--r-- 1 root root 0 04-19 20:44 Kernel.rpm-rw-r--r-- 1 root root 0 04-20 10:20 Plist[root@localhost ~]# rmdir sun/ 注:我们尝试用rmdir来删除,rmdir: sun/: 目录非空 [root@localhost ~]# rm -rf sun/ 注:强制用rm -rf 来删除;[root@localhost ~]# ls sun 注:检查是否删除,删除成功;ls: sun: 没有那个文件或目录
[root@localhost ~]# ls 123456.txt 654321.txt 98765.txtls: 123456.txt: 没有那个文件或目录ls: 654321.txt: 没有那个文件或目录ls: 98765.txt: 没有那个文件或目录[root@localhost ~]# echo > 123456.txt 注:用ech0 来创建,在创建之前在此操作目录下不存不123456.txt文件;[root@localhost ~]# ls 123456.txt 注:查看一下看有没有生成?123456.txt[root@localhost ~]# touch 654321.txt 注:用 touch 来创建,在创建之前在此操作目录下不存在654321.txt文件;[root@localhost ~]# ls 654321.txt 注:查看一下看有没有生成?654321.txt[root@localhost ~]# cat > 98765.txt 注:用ech0 来创建,在创建之前在此操作目录下不存在98765.txt 文件;然后按ctrl+c组合键退出;[root@localhost ~]# ls 98765.txt 注:查看一下看有没有生成?98765.txt
#rm [参数选项] file1 file2 ... ...#rm [参数选项] dir1 dir2 dir3 ... ...
-f 不显示警告或提示信息就删除,用的时候需要小心;-i 删除文件时,显示警告信息,要多用,这样比较安全;根据提示,输入y就表示删除,输入n,请示不删除;-r或-R 表示可以删除整个目录(包括子目录及所有文件),要小心用;
[root@localhost ~]# rm -i 123.sh 注:这是删除一个文件,用-i参数的示例,有警告提示;rm:是否删除一般空文件“123.sh”? y比如我们想删除mydir目录及所有下级目录和文件,要有提示的警告信息,可以用-r参数和-i参数的组合;如果您想终止rm命令,请按ctrl+c组合健退出rm;[root@localhost ~]# rm -ri mydir/rm:是否进入目录“mydir/”? yrm:是否进入目录“mydir//youdir”? yrm:是否删除一般文件“mydir//youdir/enteruml.sh”?
[root@localhost ~]# rm -rf mydir
#mv 原文件名或目录名 新文件或目录名
[root@localhost ~]# lscrondw.sh kernel mkuml-2004.07.17-ananas.tar.bz2 mydir openQreadme.txt sun.txt upgrade.log youdir[root@localhost ~]# mv crondw.sh 123.sh 注:移动crondw.sh 到123.sh ,其实就是把文件名改为了123.sh[root@localhost ~]# ls123.sh kernel mkuml-2004.07.17-ananas.tar.bz2 mydir openQreadme.txt sun.txt upgrade.log youdir
[root@localhost ~]# ls123.sh kernel mkuml-2004.07.17-ananas.tar.bz2 mydir openQreadme.txt sun.txt upgrade.log youdir[root@localhost ~]# mv kernel/ kernelBak[root@localhost ~]# ls123.sh kernelBak mkuml-2004.07.17-ananas.tar.bz2 mydir openQreadme.txt sun.txt upgrade.log youdir