文件处理命令
1、dirname命令
dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出,
如果最后一个/后面无字符,dirname则使用倒数第二个/,并忽略其后的所有字符。dirname和basename通常在shell内部命令替换使用,以指定一个与指定输入文件名略
有差异的输出文件名。
语法
dirname(选项)(参数)
选项
--help:显示帮助;
--version:显示版本号。
实例
dirname //
输出为/
dirname /a/b
输出为/a
dirname a
输出为.
dirname a/b
输出为a
2.basename命令
basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
语法
basename(选项)(参数)
选项
--help:显示帮助;
--version:显示版本号。
参数
文件:带路径信息的文件;
后缀:可选参数,指定要去除的文件后缀字符串。
实例
basename $WORKFILE
3、rename命令
rename命令用字符串替换的方式批量改变文件名。
语法
rename(参数)
参数
原字符串:将文件名需要替换的字符串;
目标字符串:将文件名中含有的源字符替换成目标字符串;
文件:指定要改变文件名的文件列表。
实例
将main1.c重命名为main.c
rename main1.c main.c main1.c
rename 支持通配符
?可代替单个字符
*可代替多个字符
[charset] 可替代charset集中的任意单个字符
如果使用rename foo0 foo foo0[2]*,从foo0200到foo0278的所有文件都呗重命名为foo0200到foo0278,文件中的 foo0被替换为foo
rename支持正则表达式
字母的替换
rename "s/AA/aa/" * //把文件名中的AA替换成aa
修改文件的后缀
rename "s//.html//.php/" * 把点html的后缀替换成点php的后缀
批量添加文件后缀
rename "s/$//.txt/" * //把所有的文件名都已.txt结尾
批量删除文件名
rename "s//.txt//" *//把所有以.txt结尾的文件名的.txt删掉
4、cat命令
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文本的内容,类似于type命令。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般使用more等命令分屏显示。为了控制滚屏,
可以按ctrl+S键,停止滚屏;按ctrl+Q键可以恢复滚屏。按ctrl+C键停止该命令的执行,并且返回shell提示符状态。
语法
cat(选项)(参数)
选项
1、-n或-number:有1开始对所有输出的行数编号
2、-b或者--number-nonblack:和-n相似,只不过对空白行不编号;
3、-s或--squeeze-black:当遇到连续两行以上的空白行,就代换为一行的空白行;
4、-A:显示不可打印字符,行尾显示“$”;
5、-e:
6、-t:
参数
文件列表:指定要连接的文件列表。
实例
设m1和m2是当前目录下的两个文件
cat m1(在屏幕上显示m1的内容)
cat m1 m2(同时显示m1和m2 的内容)
cat m1 m2 > file (将文件m1、m2合并后放入文件file中)
5、ln命令
ln命令用来为文件创建连接,连接类型为硬连接和符号连接两种,默认的连接类型是硬连接。如果创建符号连接必须使用 “-s”选项。
注意:符号连接文件不是一个独立的文件,它的许多属性都依赖于源文件,所以给符号文件设置存取权限是没有意义的。
语法
ln(选项)(参数)
选项
1、-b或--backup:删除,覆盖目标文件之前的备份;
2、-d或-F或--directory:建立目录的硬连接;
3、-f或--force:强行建立文件或目录的连接,不论文件或目录是否存在;
4、-i:覆盖既有文件之前先询问用户;
5、-n:把符号文件的目的目录视为一般文件;
6、-s:对源文件简历符号连接,而非硬连接;
7、-v:显示指令执行过程;
参数
源文件:指定连接的源文件。如果使用“-s”选项创建符号连接,则源文件可以是目录或者文件。创建硬连接是源文件只能是文件;
目标文件:指定源文件的目标连接文件。
实例
将/home目录下/mpSever目录下的test.txt文件连接到/gllong目录下的test001.txt文件
ln /home/mpSever/test.txt /gllong/test001.txt//硬连接
ln -s /home/mpSever/test.txt /gllong/text002.txt//符号连接
扩展知识
Linux具有为一个文件起多个名字的功能,称为连接。被连接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用
在硬盘上为同样的数据重复备份。
另外被连接的文件也可以有相同的文件名,但是存在与不同的目录下,这样只需要对一个目录下的该文件进行修改,就可以完成对
所有目录下同名连接文件进行修改。对于某个文件的各个连接文件,我们可以给它们指定不用的存取权限,以控制对信息共享和增强
安全性。
文件连接类型分为硬连接和符号连接。
硬连接
建立硬连接时,在另外的目录或本目录中增加文件的一个目录项,这样,一个文件就登记在多个目录中,
在默认情况下,ln创建硬连接。ln命令会增加连接数,rm会减少连接数。一个文件除非连接数为0,否则不会从文件系统中
被物理的删除。
对硬连接有如下限制:
不能对目录文件做硬连接。
不同在不同的文件系统之中建立硬连接。就是说,链接文件和被连接文件必须位于同一个文件系统中。
符号连接
符号连接也称为软连接,是将一个路径名连接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件。
与硬连接不同的是,符号连接文件确实是一个新文件,当然它具有不同的节点号,而硬连接并没有建立新文件。
符号连接没有硬连接的限制,可以对目标目录做符号连接,也可以在 不同的文件系统之间做符号连接。
使用ln -s命令建立符号连接时,源文件最好用绝对路径名。这样就可以在任何工作路径下进行符号连接。而当源文件用相对
路径时,如果当前的工作路径与要创建的符号文件所在路径不同时就不能创建。
符号连接保持了连接与源文件或者目录之间的区别:
删除源文件或目录,只删除了数据,不会删除连接。一旦以同样的文件名创建了源文件,连接将继续指向该文件的新数据。
在目录长列表中,符号连接作为一种特殊的文件类型显示出来。
符号连接的大小是其连接文件的路径名中的字节数。
6、unlink命令
unlink命令是调用系统函数unlink去删除指定的文件。和rm作用一样,都是删除文件。
语法
unlink(选项)(参数)
参数
文件:要删除的文件
7、touch命令
touch命令有两个功能:一是用于把已存在的文件的时间标签更新为系统当前时间,它们的数据原封不动的保存下来;
二是用来创建新的空文件。
语法
touch(选项)(参数)
选项
1、-a或-atime=atime 只更改存取时间;
2、-c 不建立任何文件;
3、-d<时间日期>使用指定的日期时间,而非现在的日期时间;
4、-m只更改变动时间;
5、-t<日期时间>使用指定的日期时间,而非现在的时间;
参数
文件:指定要设置文件属性的文件列表
实例
touch 1.txt