linux命令--文件和目录操作命令


pwd

"print working directory" 打印工作目录的绝对路径
范例: 在bash命令行显示当前用户的完整路径
系统Bash命令行的提示符是由一个称为PSI的系统环境变量控制的。
修改PSI变量对应的值。
page 15

cd

cd -  切换到当前用户上一次所在的目录路径

tree

-d 只显示目录
-f 显示每个文件的全路径
-i 不显示树枝,常与-f参数配合使用
-L level 便利目录的最大层数,level为大于0的正整数
-F 不同文件类型结尾加不同符号

mkdir

-p 递归创建目录
-v 显示创建过程
-m 设置目录的默认权限 范例: 克隆目录结构
tree -fid --noreport olfboy >> ~/oldboy.txt
cd /tmp
mkdir -p `cat ~/oldboy.txt` # mkdir命令后可以接很多目录名来批量创建目录。
tree -d /tmp/oldboy

touch

有两个功能: 一是创建新的空文件;二是改变已有文件的时间戳属性。
touch stu{1..5} 批量创建文件 GNU/Linux 的文件有三种类型的时间戳 Access: 2018-07-17 14:05:03.361270580 +0800 # 最后访问文件的时间
Modify: 2018-07-17 14:04:59.344291470 +0800 # 最后修改文件的时间
Change: 2018-07-17 14:04:59.344291470 +0800 # 最后改变文件状态的时间

ls

-l 此处的时间属性列默认是显示的文件的最后一次修改时间。
显示完成时间属性的参数:
ls -l --time-style=long-iso ls -l --time-style=long-iso --time=atime # 显示访问时间
mtime:最后修改时间 修改文件内容、文件的mtime会改变
ctime:状态改变时间 修改文件内容、移动文件或改变文件属性等,ctime会改变
atime:最后访问时间 查看文件内容时,atime会改变。 -F 目录的结尾都加上了/
ls -F | grep / 过滤目录
ls -F | grep -v / 过滤普通文件
加上* 表示可执行的普通文件
page 37
-d 只显示目录本身的信息
ls -ld dir1 ls别名
alias lst='ls -l --time-style=long-iso' # 配置命令别名
alias | grep lst # 检查命令别名是否生效
alias lst='ls -l --time-style=long-iso'
lst # 执行命令别名,检查效果。 查找最近更新过得文件
ls -lrt /etc/ -t按时间mtime排序;-r 倒叙;
ls -lrt /etc/ | tail -1 # tail -1 只显示一个文件 删除占用inode节点的垃圾:比如邮件
ls | xargs rm -f 如果文件特别多,rm -rf * 是无法删除的。 输出内容的属性解读:
ls -lhi
inode 索引节点编号
文件类型权限
硬链接个数
属主(属组)
文件或目录的大小
修改时间
名字

cp

-p 保持源文件的所有者、权限信息以及时间属性
-d 源文件是符号链接,仅复制符号链接本身,保留指向的目标文件或目录
-r 递归复制目录
-a 包含了-p、-d、-r
-i 提示用户缺
-t 可以颠倒顺序,cp -t 目标文件 源文件 cp覆盖文件之前不提示是否覆盖的几种方法:
1. 使用命令全路径
which cp # 查看cp的系统别名
/bin/cp file1 file2
2. 命令开头使用反斜线
\cp file1 file2 cp /etc/ssh/sshd_config{,.ori}
原理是bash对大括号的展开操作,展开成/etc/ssh/sshd_config /etc/ssh/sshd_config.ori 再传给cp命令

mv

alias mv # 查看mv的别名

rm

关于删除的经验:
1. 用mv代替rm,不要急着删除,而是先移动到回收站/tmp
2. 删除前务必备份。最好是异机备份。
3. 请用find替代rm
find ./ -type f -name "*.txt" -mtime +7 | xargs rm -f
4. 最多使用 rm -f 文件名。 rm -rf 误删目录时不会有提示。
5. 如果要使用通配符,最多使用rm -f ./* ,rm -rf /oldboy/ * ,会把当前目录下所有目录都删除。
6. 额外补充一点,要慎用 rsync --delete

rmdir

删除空目录
-p 子目录删除后其父目录也为空时,也一并删除。

ln,创建文件间的链接。

无参数, 创建硬链接
-s, 创建软连接(符号链接) 多个文件名指向同一个索引节点(inode),这种情况下的文件就称为硬链接。相当于文件的另一个入口。 ln -s 源文件 目标文件 # 目标文件不能事先存在,需要用ln命令创建。

readlink

-f 显示最后一个非符号链接文件
查看符号链接文件的内容

find 用于查找目录下的文件

-mtime
-n 表示文件更改时间距离现在n天以内
+n n天以前
n 距离现在第n天
-name 只支持*、?、【】等特殊通配符。
find /var/log/ -mtime +5 -name '*.log' # 在/var/log 目录下查找5天前以.log结尾的文件 find ./ -size +10M -size -20M # 查找大于 10M 小于 20M 的文件 find ./ ! -type d # !表示取反,查找不是目录的文件,注意!位置。 find正则表达式: find / -regex ".*find" ls -l 放在-exec的选项中执行:
find ./ -type f -exec ls -l {} \;
;号表示结束,\转义,{}代指前边find查找到的内容。 使用xargs执行mv:
find . -name '*.log' | xargs -i mv {} dir2/ 在/oldboy目录以及子目录下的所有以扩展名.sh结尾的文件中,做字符串替换,吧./hostlists.txt替换为../idctest_iplist。
find /oldboy -name '*.sh' -exec sed -i 's#./hostlists.txt#../idctest_iplist#g' {} \; # 文件多是效率低
find /oldboy -name '*.sh' | xargs sed -i 's#./hostlists.txt#../idctest_iplist#g'
sed -i 's#./hostlists.txt#../idctest_iplist#g' `find /oldboy -name '*.sh'` # 命令语句中如果有反引号,先执行反引号中的命令。 现在有 file1 file2 file3 这 3 个文件打包 . 打包文件为niliu.tar
#tar cvf niliu.tar file1 file2 file3
find ./ -type f -name 'test.txt' | xargs tar -zcvf oldboy01.tar.gz find ./ -type f ! -name 'test1' | xargs rm -f
find /root -maxdepth 1 -type f ! -name '.*' # 只显示一级目录下的文件,不包含隐藏文件 清理指定的内容:
find . -type f | xargs sed -i '/*content*/d' 只保留7天的日志:
find . -type f -name 'access.log' -mtime +7 | xargs rm -f 将找到的文件移动到指定位置:
find . -name '*.log' | xargs -i mv {} dir2/
find . -name '*.log' | xargs mv -t dir2/ # 因为find找到的结果通过xargs会默认作为命令的目标,即mv dir2/ 目标,显然是错误的。
mv `find . -name '*.log'` dir2/

xargs

-i 以{}代替前边的结果
-p 提示让用户确认是否执行后边的命令,y执行,n不执行。
-n 指定每行的最大参数量,可以将标准输入的文本划分为多行,每行n个参数,默认空格分隔。 多行输入变单行:
xargs < test.txt

rename

rename from to file
from: 需要替换或处理的字符串
to: 替换后的内容
file: 待处理的文件,可以用* 匹配所有文件。 rename .jpg .oldboy *.jpg

basename

dirname

chattr 改变文件的扩展属性

chmod只是改变文件的读、写、执行权限,更底层的属性控制是chattr来改变的。
设置只能往文件追加内容,不能删除文件。
chattr +a test 给文件枷锁,使其只能是只读。
chattr +i test

lsattr

查看文件的扩展属性: lsattr file1.txt
查看目录的扩展属性:
chattr +i dir1 # 目录也可以加只读权限。
lsattr -d dir1

file

显示文件的类型

md5sum 计算和校验文件的md5值

-c 从指定文件中读取MD5校验值,并进行校验。
md5sum oldboy.txt > md5.log # 先生成校验文件
md5sum -c md5.log # 检查使用-c参数

chown 用于改变文件或目录的用户和用户组。

常用格式:
chown 用户 文件或目录 # 仅仅授权用户
chown :组 文件或目录 # 仅仅授权组
chown 用户:组 文件或目录 # 表示授权用户和组 其中的:可以用.来替代;
用户和组名,必须是实际存在的。 -R 递归改变目录的用户和用户组

chmod 改变文件或目录权限

-R 递归处理
文件、目录的读、写、执行权限说明: page85

chgrp

只用于更改文件的用户组,功能被chown取代了。

umask 显示设置权限掩码

文件权限计算:  666 - umask;
目录权限计算: 777 - umask; umask 044
touch file2;ll -h file2 # 两条命令通过分号链接在一起,可以再一起执行。

linux命令_文件目录操作命令的更多相关文章

  1. Linux命令_磁盘管理_查看磁盘或目录的容量

    软件环境:虚拟机VM12,Linux版本 CentOS 7.3 命令 df (disk filesystem) 用于查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认以KB为单位显示 ...

  2. Linux命令_搜索文件

    一.用which命令查找可执行文件的绝对路径 which命令用来查找PATH环境变量中出现的路径下的可执行文件. 二.用whereis命令查找文件 whereis命令通过预先生成的一个文件列表库查找与 ...

  3. 【Linux命令】文件目录管理命令7个(touch、mkdir、cp、mv、rm、dd、file)

    目录 touch创建空白文档或设置文件时间 mkdir创建空白目录 cp复制文件或目录 mv剪切文件或重命名文件 rm删除文件或目录 dd按照指定大小和个数的数据库来复制文件或转换文件 file查看文 ...

  4. Linux命令查找文件目录

    座右铭:长风破浪会有时,直挂云帆济沧海. linux一般查看文件或者目录有几种方法. /查看文件类容--------cat/more/less/head/tail   只能查看文本型(txt) (1) ...

  5. Linux 命令:文件目录操作与实例

    来源: http://blog.51cto.com/yuanzhitang/2056994 本文介绍基础的文件操作:创建,移动,编辑,删除 文件和文件夹   命令与案例:   mkdir 创建目录 - ...

  6. Linux命令_用户身份切换

    命令 su 格式为:su [ - ] username,后面可以跟 - ,也可以不跟. 普通用户的su命令不加username时,就相当于切换到root用户,反之亦然.当su 命令加上 - 后,会初始 ...

  7. Linux命令_用户和用户组管理

    新增组的命令 groupadd 格式:groupadd [-g GID] groupname 如果不加-g选项,则按照系统默认的gid创建组.跟uid一样,gid也是从1000开始的. 我们也可以如下 ...

  8. Linux学习笔记2——Linux中常用文件目录操作命令

    ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...

  9. win10的power shell可以学习少部分linux命令_功能与cmd类似

    更新帮助文件:

随机推荐

  1. java细节知识

    代码优化细节 (1)尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是fin ...

  2. Python——查看安装位置和安装的库

    查看Python 安装位置和安装的库 步骤一:  1. Start 一个command prompt  2. 找到电脑中已经安装的Python 位置: where python 1 打开路径, cd ...

  3. C# 调用程序集方法

    加载程序集 (Assembly类) 使用 Assembly 类可以加载程序集.浏览程序集的元数据和构成部分.发现程序集中包含的类型以及创建这些类型的实例 // 加载该路径的程序集 Assembly a ...

  4. C# String 与 StringBuilder

    String 字符串不可变性,每次为字符串进行增删或重写赋值会销毁原来的字符串,重新开辟内存空间,因此是非常消耗资源的 字符串可以看做是 char 数组,因此可以用 foreach 对其进行遍历,或者 ...

  5. netbeans 正则替换

    单引号替换为双引号: tablename1('xhw_aa')  tablename2('xhw_bb') tablename3('xhw_cc') tablename4('xhw_dd')   (t ...

  6. as3:sprite作为容器使用时,最好不要指定width,height

    除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的高度为 0,即使您尝试将 height 设置为其它值,也是这样. 如果您设置了 height 属性,则 ...

  7. Python设计模式 - UML - 包图(Package Diagram)

    简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...

  8. 20175314 《Java程序设计》第六周学习总结

    20175314 <Java程序设计>第六周学习总结 教材学习内容总结 第七章:内部类与异常类 内部类:内部类就是在一个类中再定义一个类,这个在类中定义的类就叫做内部类,而包含内部类的类叫 ...

  9. C#之SByte

    int8 C#中,byte为无符号8位整数,而Sbyte为有符号8位整数,对应java中的byte类型. 方法一将 byte 转为 sbyte.原理很简单,就是当 byte 小于 128 时其值保持不 ...

  10. jquery中bind和on的区别

    1.首先,来看看bind和on的语法. bind的用法: $('a').bind('click',[data],function(){}) 其事件的绑定者是固定的,就是a,第一个参数是事件,第二个参数 ...