文件管理
1. 文件通配符
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~papo 用户papo的家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]:任意一个小写字母
[A-Z]:任意一个大写字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
[:digit:] 任意数字,相当于[0-9]
[:lower:] 任意小写字母=[a-z]
[:upper:] 任意大写字母=[A-Z]
[:alpha:] 任意大小写字母[a-zA-Z]
[:alnum:] 任意数字或字母[0-9a-zA-Z]
[:space:] 水平或垂直空白字符
2. cp命令主要用于复制文件或目录。
语法
cp [options] source dest 可以复制、覆盖,都为单个文件
cp source.... dir dir必须存在,且为目录
cp -t dir source..... 目录放前需用-t选项,后面可以跟多个文件,适用于写脚本别名等。
cp /etc/issue . 其中.是当前目录
cp /etc/issue ./issuebak 复制并重命名为issuebak
cp -r /boot /data 复制文件夹得+r选项
cp复制会使部分属性丢失
所以cp -a 可以备份文件,保留文件的全部属性,相当于-dR --preserv=all
cp -i 覆盖前询问
cp -n 不覆盖
cp -d不复制原文件,只复制链接名
cp -f 强制覆盖
cp -b 覆盖并保存原文件
例:每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见
答:#cp -av /etc/ /data/etcdate +%F
3. mv命令移动或重命名文件
mv -i 交互式 既移动覆盖前询问
mv -f force强制性 覆盖前不提示
mv -b 为现有的每一个目标文件作一个备份,但是不接受参数
mv -u 只移动更老的或者标记新的非目录
上图中$ mv file file1 既是给文件改名
$ mv file2 /data/dir1/file.txt 是吧file2移动到dir1文件夹并改名为file.txt 如果不想改名既file.txt 不写即可
$ mv /data/dir1 dir2 是给文件夹改名
4. rm命令 移除文件或者目录
rm [选项] 文件...
rm -f 强制删除 不询问
rm -i 删除前询问
rm -r 递归删除目录及其内的文件
如上图 删除文件f1 但是有别名rm=rm -i 出现询问是否删除提示
此时需要输入y再enter既确认删除
但是rm -f file1时 时强制删除file1 所以不会出现询问
rm -rf dir1 是删除文件夹 所以需要r递归选项 f强制删除不询问
5. file命令 确认文件类型
file常用于查文件类型,因为linux中对于文件的后缀要求不大很多文件都可以用同一后缀或者没有后缀,这样就加大了我们确认他是什么类型文件的难度。这时就需要file 单个或多个文件,就能确认他是什么类型文件
file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file ...
如上可以直接跟文件名即可
6. cat命令 连接文件并在标准输出上输出
cat -E [文件列表] 在每行结束显示 $
cat -n 给所有输出行编号
cat -ns 压缩连续空行 并查看行号
cat -b 给非空行输出行号
cat -A 输出显示所有控制符
tac 反转显示文件 效果相当于cat的行倒序
rev 同行倒序显示文件
7. head 显示输出文件的开始部分
head [选项]... [文件]...
head -c # 打印显示起始的#个字节
head -n # 答应显示起始的#行 默认十行
8. tail 显示输出文件的末尾部分 既最后几行
tail [选项]... [文件]... 默认是显示最后十行
在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个>地显示, 并在每个文件显示的首部给出文件名.
tail -c # 显示文件的最后#个字符
tail -n # 显示最后#行
tail -f 文件名 当文件增长时,输出后续添加的数据 跟踪的是文件描述符
tail -F 文件名 跟踪的是文件名(名称)
tailf 类似于tail -f 文件不增加 就不去访问跟踪文件
9. cut - 在文件的每一行中提取片断 (剪切)
cut [选项]... [文件]...在 每个文件 FILE 的 各行 中, 把 提取的 片断 显示在 标准输出.
cut -d ‘分隔符‘ -f(1或1,3或(1-6))既以某一字符为分隔符 取分割后的第1段或者第一,三段或者 1-6段
cut -c 既提取某一段的字符 cut -c 47-50 提取第47到第50的字符
10. wc - 统计输出文件中的行数、单词数、字节数
wc [选项列表]... [文件名列表]...
对每个文件输出行、单词、和字节统计数,如果指定了多于一个文件则还有一 个行数的总计。没有指定文件或指定的文件是 -,则读取标准输入。
wc 文件名(可多个文件统计)
既统计4行;13个单词 ;38个字节;
wc -l 统计行数
wc -w 输出单词统计数
wc -c字节数统计
wc -m 字符数统计
wc -L 显示文件中最长的行的长度(字节数)
11. sort - 对文本文件的行排序
sort [选项]... [文件]...
将排序好的所有文件写到标准输出上
sort -r 倒序排列(由下至上)
sort -n 按数字大小排列
sort -u 删除重复行
sort -f 忽略大小写排列
sort -t 指定分隔符 -k 取第几段 按这一段的字符排列
sort -R 随机排列
sort -b 忽略排序字段或关键字中开头的空格
sort -c 检查是否指定文件已经排序好了,不排序
sort -o 输出文件名 将排序后的结果存入指定的文件
12. uniq - 删除排序文件中的重复行
从 标准输入数据中忽略 (但是 保留 一行)连续的相似行, 结送入标准输出.
uniq -c 行首显示重复的数目
uniq -d 仅显示重复的行
uniq -u 仅显示不重复的行
uniq -i 忽略大小写
综合示例:
查出?户UID最?值的?户名、 UID及shell类型
cat /etc/passwd|cut -d: -f1,3,7|sort -nrt: -k2 |head -1
既查看文件;以:为分隔符 取第1,3,7段;取第二段字符排序按数字大小排序,取第一行
命令显示如下:
$ cat /etc/passwd|cut -d: -f1,3,7
$ cat /etc/passwd|cut -d: -f1,3,7|sort -rnt: -k2
cat /etc/passwd|cut -d: -f1,3,7|sort -nrt: -k2 |head -1
原文地址:https://blog.51cto.com/14322554/2400040