文件和目录操作命令(18个)
ls(列出目录内容和属性)
全拼list,功能是列出目录的内容及其内容属性信息。
-l(long) 长格式 注:-l 显示的时间是mtime
-d --directorys当遇到目录时列出目录本身而非目录内的文件
ls –d #只显示.(.表示目录本身)
ls –d */ #显示当前目录下的目录及其子目录
-r --reverse: 倒序显示(按字母)
ls -lrt #显示最近修改的文件
-R --recursive: 递归列出子目录
-t(time): 按时间显示(从现在到过去)
-h, --human-readable 以易于阅读的格式输出文件大小
-S: 按文件大小 大到小
ls-lhS #文件从小到大排序
-i --inode: 文件或目录的 索引节点号
-n: 显示UID和GID(-l显示的是名称)
-F: 给不同文件结尾加标识(目录是/)
-p: 给目录结尾加/
--color=auto 显示颜色
inode节点号:存储了文件的属性信息。指向一个或多个block(block里存放的是文件的数据信息)
文件类型与权限:第1位为文件类型,后9位为权限。若最后有个. 则代表该文件是在SELinux开启时创建的文件。若无. 则不是
文件类型总结
d:文件夹
-:普通文件
l:链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如猫等串口设备)
s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)
特殊属性的总结
sst,显示在相应的x权限位上
setuid:让执行该命令的用户以该命令拥有者的权限去执行
setgid:1)执行文件的用户以该文件所属组的权限去执行
2)在设有该权限位的目录下创建的文件,文件权限和组一致
sticky:该文件只有root用户和文件属主可删除
硬链接数:文件为1,目录为2,目录下每多一个子目录,硬链接数加1
../oldboy #上层目录下的当前目录
../oldboy/. #上层目录下的当前目录.
oldboydir/.. #子目录的上层目录
硬链接与软链接区别
ln –s源文件 链接文件#创建软链接
ln源文件 链接文件#创建硬链接
1)在软链接的inode与源文件不同,软链接的block里存放的是源文件的绝对地址。硬链接inode与软链接相同,硬链接与源文件指向同一个block
2)删除源文件,软链家会变成红底白字失效。硬链接不受影响
3)软链接可以跨文件系统,硬链接不能跨文件系统。(inode和block都是在创建文件系统时生成的。硬链接共享indoe,决定了它不能跨文件系统)
时间戳
atime:访问时间
ctime:属性改变时间(mtime变,ctime同步变)
mtime:内容改变时间
文件名
存放在上层目录的block中
cd(切换目录)
全拼change directory,功能是从当前工作目录切换到指定的工作目录。
cp(复制)
全拼copy,其功能为复制文件或目录。
- i 覆盖前询问
-R/r:递归,用于复制目录;
-p:等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳)
如果可能保持附加属性:环境、链接、xattr 等
--no-dereference:不跟随源文件中的符号链接
--preserve=links:保持链接的属性
-a:相当于-pdR;
-p:保持属性
–d:保持连接属性
–R:递归复制
-n --no-clobber :不覆盖已存在文件
cp dir{3,4} #复制dir3为dir4
cp a {,.ori} #复制a为a.ori
cp /etc/{sshd/sshd.config,dhcp/} #复制sshd.conf到dhcp目录下
find(查找文件)
查找的意思,用于查找目录及目录下的文件。
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-user按照文件属主来查找文件。可用nouser查没有属主的文件
-group 按照文件所属的组来查找文件。可用nogroup查没有属组的文件
-mtime -n +n 按照文件的更改时间来查找文件 –n 表示n天内,+n表示n天以前
-maxdepth 查找最大目录层数 如 1,即只查找一层目录
-size 按文件大小查找 -size 20K –size 30K #查找20K到30K间的文件
find /data -type f -name "oldboy.txt" -exec rm {} \;
find /data -type f -name "*.txt" | xargs rm -f(删除data目录下所有txt文件)
mkdir(创建目录)
全拼make directories,其功能是创建目录。
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
mkdir –p /dir1/dir2/dir3
mv(移动/重命名文件)
全拼move,其功能是移动或重命名文件。
mv [选项]... 源文件... 目录 #注意,目的地必须是目录
mv [选项]... -t 目录 源文件... #-t 会调换source和destination的位置,一般在有管道符时用
-f –force 覆盖时不询问
-n --no-clobber 不覆盖已存在文件
-u --update 源文件比目标文件新,或目标文件不存在时才移动
pwd(当前目录绝对路径)
全拼print working directory,其功能是显示当前工作目录的绝对路径。
-P --physical 目录是软连接时,显示实际地址
-L --logical 显示逻辑地址,即软连接本身地址
rename(批量重命名文件)
用于重命名文件。
rename 源字符 替换字符 文件名 #必须要3个参数
通配符(用于文件名)
? 匹配任意一个字符
* 匹配任意多个字符
rename 100 200 100*.txt #把所有文件名以100开头的.txt文件替换为200开头
rename .txt .log * #把所有.txt文件的后缀名改为.log
rm(删除)
全拼remove,其功能是删除一个或多个文件或目录。
-f(force)强制
-r(recursive)递归,用于删除目录
-d 删除空目录
rmdir(删空目录)
全拼remove empty directories,功能是删除空目录。
-p, --parents 删除指定目录及其上级文件夹,例如"rmdir -p a/b/c'"
touch(创文件)
创建新的空文件,改变已有文件的时间戳属性。
-r --reference=文件 使用指定文件的时间属性替代当前时间
touch -r des.php source.php #使用des.php的时间属性,替换source.php的时间属性
-d, --date=字符串 使用指定字符串表示时间替代当前时间。
mtime和atime会变为修改后的时间,ctime会变为执行命令的当前时间
touch -d "2 days ago" test.php #将test.php日期修改为2天以前
tree(树形显示)
功能是以树形结构显示目录下的内容。
-a 显示所有文件和目录。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容
-i 不以阶梯状列出文件或目录名称,可以方便过滤
-L 层级显示,后接number,指定显示几层
basename(用于shell编程)
显示文件名或目录名。总是显示最后的文件名或目录名
dirname(用于shell编程)
显示文件或目录路径。
lsattr(查看文件扩展属性)
查看文件扩展属性。
文件扩展属性和文件权限最重要的不同在于属性并不依赖于某个用户帐号
chattr(设置扩展属性)
改变文件的扩展属性。
权限设定
+ 增加权限
- 取消权限
= 唯一设定权限
属性
a:只能在添加模式下打开用于写入. 只有root可以设置或清除该属性
i:该文件属性无法修改,只有root可设置或清除该属性(在网卡DNS覆盖/etc/resolv.conf中的DNS时,将resolv.conf的属性设为i,可防止覆盖)
file(显示文件类型)
显示文件的类型。
-L显示符号链接文件的原文件
md5sum(加密)
计算和校验文件的MD5值。文件内容相同的文件,MD5值一样。
md5sum file > file.md5 #生成md5加密检验和
md5sum –c file.md5 #检验与文件是否一致
注意:
1)md5值是根据文件内容计算的
2)file.md5值只能检验file文件。如果file文件改了名,就不能检验
原文:http://blog.51cto.com/12758568/2117961