操作文件和目录

Linux

Linux文件系统

  • 树形结构,从根目录root(/)开始
  • Linux文件系统的结构:
    / : 所有文件的跟目录
    /bin : 存放二进制可执行命令目录
    /home : 用户主目录的基点目录
    /lib : 存放标准程序设计库目录, 动态链接共享库目录
    /etc : 存放系统管理和配置文件的目录
    /dev : 存放设备特殊文件目录
    /usr : 存放应用程序和文件目录
    /proc : 虚拟目录, 是系统内存的映射,可直接访问这个目录来获取系统信息
    /root : 系统管理员的主目录
    /var : 存放系统产生的经常变化的文件的目录
    /tmp : 存放公用临时文件目录

Linux文件系统操作

1. 快捷操作

快捷键操作
Ctrl+C终止当前命令
Ctrl+Z暂停当前命令
Ctrl+D输入结束, 退出
Ctrl+M相当于Enter
Ctrl+S暂停屏幕的输出
Ctrl+Q恢复屏幕的输出
Ctrl+U在提示符下,将整行命令删除

2. 目录操作命令

  1. 切换工作目录
**cd**
cd [目的目录] : 切换目录至目的目录
cd : 切换到当前用户的家目录
cd - : 切换到当前用户上一次所在的目录
cd .. : 切换到当前目录的上一级目录

pwd : 查看"当前所在目录"的完整路径
ls : 显示当前目录下的内容
ls -l : 显示文件或目录的详细信息
  1. 创建和删除目录
**mkdir**
mkdir [选项]... 目录名... : 创建一个或多个目录 ( 可同时多个选项,多个目录)
-p : 若所建目录的上层目录不存在, 会一并建立

**rmdir**
rmdir [选项]... 目录名... : 从一个目录中删除一个或多个目录
-p : 删除指定目录后,若该目录的上层目录已变成空目录,则一并删除

3. 文件操作命令

  1. 显示文件
**cat**
cat [选项]... [文件]... : 把多个文件的内容连接后 输出到屏幕显示 ( 若最后 >file : 则前面文件内容连接后 输出到file文件中,很多情况都适用 )   (选项可以一起使用: -bs)
选项:
-b : 从1开始对所有输出行编号, 非空行不编号
-n : 从1开始对所有输出行编号
-s : 将连续两行及以上的空白行合并成一行空白行

**more**
more [选项]... [文件]... : 显示文本文件的内容, 一次显示一屏,满屏后停下来. 按如下键继续:
(1) Enter键 : 默认显示文本的下一行内容
(2) Ctrl+D : 向下显示半屏文本内容
(3) Ctrl+B : 向上显示半屏文本内容
(4) Space键 : 默认显示文本的下一屏内容
(5) q : 退出more命令
选项:
-num : 指定一个整数,表示一屏显示多少行
+num : 从行号num开始显示
+/pattern : 定义一字符串,在文件中查找该字符串,从该字符串后开始显示
-d : 在每屏底部显示提示信息

**less**
less [选项]... [文件]... : 与more命令相似,分屏显示文件内容. 但less命令允许用户向前或向后浏览文件, q退出
选项:
-m : 显示读取文件的百分比
-M : 显示读取文件的百分比, 行号及总行数
-N : 在输出显示的每行前显示行号
-p pattern : 定义一字符串,在文件中查找该字符串,从该字符串后开始显示

**head**
less [选项]... [文件]... : 用于查看一个文件的开头部分, 行数由参数值决定,默认是10. 如果给定的文件不止一个,则在显示的每个文件前面加一个文件标题.
选项:
-c : 显示文件前面num个字节( head -c20 1.txt )
-n : 显示文件前面num行,不指定此参数显示前10行( head -n5 1.txt )

**tail**
tail [选项]... [文件]... : 用于查看一个文件末尾若干行,行数由参数值决定,默认是10. 如果给定的文件不止一个,则在显示的每个文件前面加一个文件标题.
选项:
-c : 显示文件最后面num个字节( tail -c20 1.txt )
-n : 显示文件最后面num行,不指定此参数显示后10行( tail -n5 1.txt )
  1. 搜索, 排序及去掉重复行
**grep**
grep [选项] 查找条件 [文件] : 查找文件里符合条件的字符串, 将该字符串所在的一行的内容都输出( \n截止 ) 
( 如: grep e 1.txt : 查找含字母e的字符串所在行的内容 )
选项: 
-b : 在显示符合匹配字符串的行前,标识该行第一个字符的位编号 (注意有'\n')
-c : 计算符合匹配字符串的行数
-n : 在显示符合匹配字符串的行前,标识该行的行号
-x : 只显示全行都严格匹配的行
-i : 忽略大小写
-v : 反转查找,显示不包含匹配字符串的文本行
-V : 显示版本信息

**sort**
sort [选项]... [文件]... : 对指定文件中所有的行排序, 将结果显示在屏幕上. (多个文件是混在一起排序的)
选项:
-m : (给定文件已排好序),合并文件
-c : 检查给定文件是否排序,未排序打印出错信息
-u : 对排序前后相同的行只留其中一行
-f : 忽略字母大小写
-r : 按逆序输出排序(默认是升序)

**uniq**
uniq [选项]... [输入文件[输出文件]] : 检查及删除文件中连续重复出现的行 ( uniq 1file.txt 1.txt )
选项:
-c : 显示输出中,在每行行首加上该行在文件中连续出现的次数
-u : 只显示文件中不重复的各行
-d : 只显示文件中的重复行(不重复显示)
  1. 比较文件内容
**comm**
comm [选项]... 文件1 文件2 : 对两个已经排好序的文件进行比较,从文件1和文件2中读取正文行进行比较,生成3列输出: 仅在文件1中出现的行, 仅在文件2中出现的行, 在两个文件中都出现的行.
选项:
-123 : 选项1,2,3分别表示不显示comm输出的第一列,第二列,第三列

**diff**
diff [选项]... 文件列表 : 比较文本文件,并找出它们的不同
-b : 忽略空格造成的不同
-B : 忽略空行造成的不同
-i : 忽略大小写的不同
  1. 文件内容统计
**wc**
wc [选项]... [文件]... : 统计给定文件中的行数,字数,字节数
-l 或 -lines : 统计行数
-w 或 -words : 统计字数
-c 或 -bytes : 统计字节数
-m 或 -chars : 统计字符数
  1. 文件的压缩和备份
**bzip2命令**
bzip2 [选项]... [要压缩的文件] : .bz2文件的压缩程序,并删除原始文件
选项:
-d : 执行解压缩
-f : 压缩或解压缩时,若输出文件与现有文件同名,覆盖现有文件
-k : 压缩或解压缩后,保留原始文件

**gzip**
gzip [选项...] [文件] : .gz文件的压缩程序,并删除原始文件
选项:
-d : 执行解压缩
-f : 强行压缩文件
-r : 递归处理, 将指定目录下的所有文件及子目录中的文件一并压缩或解压缩

**tar**
tar [选项],,, [文件或目录]... : 用来建立,还原文件的工具程序,它可以加入,解开备份文件(.tar)内的文件
( tar -cvf 123.tar 1.txt 2.txt : 将当前目录下的文件1.txt , 2.txt 备份到123.tar中)
选项:
-cf<备份文件> : 建立新的备份文件
-xf<备份文件> : 从备份文件中还原文件
-v : 显示指令执行过程(-cvf)
-A : 新增tar文件到已存在的备份文件

3. 目录 and 文件操作命令

  1. 复制, 删除和移动
**cp**
cp [选项] [源文件或目录] [目标文件或目录] : 文件复制. 
如果源是普通文件,把源文件复制为 指定名目标文件 或 复制到 指定的目标目录中;
如果源是目录,把源目录复制到目标目录中(-r),目标目录不存在则新建;
选项:
-p : 复制源文件或目录内容的同时,也复制文件属性
-f : 强制复制文件或目录
-i : 覆盖目标文件前需要确认(y / n)
-d : 复制符号链接时,把目标文件或目录也建立符号链接,并指向与源文件或目录链接的原始文件或目录

**rm**
rm [选项]... [文件或目录]... : 删除文件或目录(删除目录: -r)
-f : 强制删除文件或目录
-i : 删除文件或目录前提示用户确认(y / n)

**mv**
mv [选项]... [源文件或目录] [目标文件或目录] : 可移动文件或目录;可更改文件或目录的名称
选项:
-f : 若目标文件或目录已存在,直接覆盖
-i : 覆盖文件前需要确认
-n : 不覆盖已存在的文件
-u : 移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件
  1. 查找
**find**
find [文件或路径清单] [表达式] : 用于查找符合条件的文件和目录
表达式: 包含要寻找的文件的匹配规范或说明(从左向右求值,只要表达式中的结果为真,则进行下一个测试)
选项:
-name "*文件类型" : 若所建目录的上层目录不存在, 会一并建立 
   (find . -name "*.txt" : 寻找当前目录及其子目录下所有.txt文件)
  1. 改变存取权限
**chmod**
chmod [who] [opt] [mode] [文件或目录]... : 用于改变文件或目录的访问权限
who: 表示对象. u(文件所有者); g(同组用户); o(其他用户); a(所有用户) --> (可使用一个或多个)
opt: 表示操作. +(添加某个权限); -(取消某个权限);=(赋予给定权限并取消原有权限)
mode: 表示权限. r(可读);w(可写); x(可执行) --> (可使用一个或多个)
(chmod u=rw,g=x,o= 1.txt    ;  ls -l 1.txt 可查看文件的详细信息)
  1. 链接
**ln**
ln [选项]... [源文件或目录] [目标文件或目录]: 用于链接文件或目录
选项:
-s : 对源文件建立软链接(符号链接),而非硬链接

Python

使用内置的os模块可以直接调用操作系统提供的接口函数

>>> import os
>>> os .name   # 操作系统类型
>>> os.uname   # 操作系统的详细信息
>>> os.path.abspath('.')   # 查看当前目录的绝对路径

# 在某个目录下创建一个新目录
>>> os.path.join('usrcindy/python','test')    # 首先把新目录的完整路径表示出来
>>> os.mkdir('usrcindy/python/test')   # 然后创建一个目录

>>>  os.rmdir('usrcindy/python/test')   # 删除一个目录 
>>> os.path.split('usrcindy/python/test')   # 把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
>>> os.path.splitext('usrcindy/python/test/1.txt')   # 拆分得到文件扩展名

>>> os.rename('test.txt','test.py')   # 对文件重命名
>>> os.remove('test.py')   # 删除文件

# 过滤文件
[x for x in os.listdir('.') if os.path.isdir(x)]   # 列出当前目录下的所有目录
[x for x in os.listdir('.') if os.path.isfile(x) and os.path.stlitext(x)[1]=='.py']   # 列出当前目录下的所有.py文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值