Linux文件管理命令
Linux命令学习
仅记录一些常用的案例,不对具体的命令参数进行记录,繁琐且在网络上就能很方便查到。
重定向符号
符号 | 含义 |
---|---|
重定向:将数据传到其他地方 | |
> | 输出覆盖重定向 |
>> | 输出追加重定向 |
<或者<< | 输入重定向 |
举例
1.读取文件内容并覆盖写入另一个文件中。
cat dy.txt > ks.txt
2.读取文件内容并追加写入
cat dy.txt >> ks.txt
3.重定向写入符
cat < ks.txt #把文件中数据发送给cat命令读取
xargs -n 3 < test.txt #将文本内容拆分成多行(每行为3 )
# xargs需要等待输入
4.非交互式写入文件内容
cat >> gushi.txt <<EOF
> 飞流直下三千尺
> 疑是银河落九天
> EOF
cat命令
Linux cat 命令 用于查看纯文本文件内容(内容较少的),是单词concatenate的缩写,指的是连接多个文件且打印到屏幕或重定向到文件中。
功能 | 说明 |
---|---|
查看文件内容 | cat file.txt |
多个文件合并 | cat file.txt file2.txt > file3.txt |
非交互式编辑或追加文件内容 | cat >> gushi.txt <<EOF > 飞流直下三千尺 > 疑是银河落九天 > EOF |
清空文件内容【慎用】 | cat /dev/null > file.txt 【/dev/null是linux的黑洞文件】 |
举例
1.查看文件内容
cat test.txt
cat file.txt file2.txt
-b 对非空行显示行号
-n 对所有行显示行号
2.合并多个文件,写入新的文件中
cat douyin.txt gushi.txt > ./new.txt #new.txt可以是原先不存在的
3.非交互式写入文件内容
cat >> gushi.txt <<EOF
> 飞流直下三千尺
> 疑是银河落九天
> EOF
4.清空文件
echo > gushi.txt #把空行覆盖写入文件,但是会留下一个空行
管道符|
可以用于对字符串进行二次过滤。
查看gushi.txt文件的内容,并对内容进行二次过滤,找出含有黄河的行。
[wg@localhost test]$ cat gushi.txt | grep "黄河"
黄河入海流
grep命令
Linux grep 命令 用于查找文件里符合条件的字符串或正则表达式。
more和less命令
Linux more 命令 用于分屏查看文本内容。
more file.txt #分屏显示文件内容
按enter是下一行
空格向下滚动一个屏幕
=显示行号
按q是退出
head和tail命令
Linux head 命令 用于查看文件开头的n行。
head -5 file.txt
查看前五行
不加参数默认10行
tail默认查看最后的10行,也可以指定行数。
tail file.txt
tail -2 file.txt #显示后2行
-f 实时刷新文件变化
tail -f file.txt
-F会不断打开文件,可以使用在文件还没被创建的情况下的监视
cut命令
Linux cut 命令 用于显示每行从开头算起 num1 到 num2 的文字。
1.截取每一行第4个字符
cut -c 4 file.txt
2.截取第4-6个字符
cut -c 4-6 file.txt
3.截取第5和7个字符
cut -c 5,7 file.txt
4.截取一个范围内的字符,使用首尾
cut -c -8 file.txt
cut -c 7- file.txt
5.指定分隔符,截取字符
cut -d ":" -f 3 file.txt #-d搭配-f使用,-d指定分隔符,-f指定截取的区域。以冒号为分隔符,找出第三个区域的内容
cut -d ":" -f 7- file.txt
cut -d ":" -f -8 file.txt
sort命令
Linux sort 命令 用于将文本文件内容加以排序,然后输出结果。
这个排序只是在显示输出上,并没有对原来的文件进行更改。
1.对文件的第一个字符排序,默认从小到大
sort -n file.txt
2.对排序结果进行反转
sort -n -r file.txt
3.排序结果去重
sort -u file.txt
4.指定分隔符,对指定区域进行排序
sort -n -t "." -k 4 ip.txt #对ip.txt文件定义.为分隔符,对第4块区域从小到大进行排序。
uniq命令
Linux uniq 命令 用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
常用参数有:
-c或--count 在行首显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-u或--unique 仅显示出一次的行列。
1.去除连续的重复行
uniq file.txt
2.结合sort使用,去重
sort -n file.txt|uniq
3.统计每一行的重复次数
sort -n file.txt|uniq -c
4.只找出文件的重复行,且统计出现次数
sort -n file.txt|uniq -d -c
5.找出只出现过一次的行
sort -n file.txt|uniq -c -u
wc命令
Linux wc 命令 用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数。
1.统计文件行数
wc -l file.txt
2.统计单词数量
echo "apple huawei vivo oppo xiaomi" |wc -w
3.统计字符数量
[wg@localhost test]$ echo "apple" |wc -m
6
##为什么是6而不是5?因为字符串结尾有$符。$符号时即代表字符串结束。
4.输出最长行的字符数
cat file.txt |wc -L
5.不仅可以用于统计文件。输出当前有多少终端登录。
[wg@localhost test]$ who | wc -l
3
tr命令
Linux tr 命令 用于转换或删除文件中的字符。tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
1.替换标准输入的大小写
[wg@localhost test]$ echo "my name is wg" | tr '[a-z]' '[A-Z]'
MY NAME IS WG
[wg@localhost test]$ echo "my name is wg" | tr a-z A-Z
MY NAME IS WG
2.使用-d参数,删除特定内容
echo "my name is wg and i am 24 years old" | tr -d 'a-z'
24
echo "my name is wg and i am 24 years old" | tr -d a-z
24
echo "my name is wg and i am 24 years old" | tr -d '0-9'
my name is wg and i am years old
# 经过尝试,其中的字符集单引号可以不写,但是不方便阅读。
3.把文件当作标准输入进行字符替换。
[wg@localhost test]$ tr 'i' 'I' < name.txt
my name Is wg
4.使用-s参数缩减连续重复的字符成指定的单个字符
[wg@localhost test]$ echo "iii amm a looosser" | tr -s 'imos'
i am a loser
5.使用-s参数替换空格为换行符
[wg@localhost test]$ echo "iii amm a looosser" | tr -s ' ' '\n'
iii
amm
a
looosser
文件搜索 find命令和xargs命令
首先了解一下stat命令:Linux stat 命令用于显示 inode 内容。
Linux find 命令 用于在指定目录下查找文件和目录。它可以使用不同的选项来过滤和限制查找的结果。
1.全盘搜索
find / -maxdepth 2 -name "*.txt" #从根目录开始全盘搜索最大目录深度为2的.txt结尾的内容
2.按类型搜索
find . -type f -name "[0-9]*" #在当前目录查找名字以数字开头的文件
find . -type d -name "[0-9]*" #在当前目录查找名字以数字开头的目录
3.查找并删除
find . -type f -name "[0-9]*" -delete #在当前目录查找名字以数字开头的文件并删除
4.按时间查找
find . -type f -atime -2 #在当前目录查找访问时间在两天以内被访问的文件
find . -type f -atime 2 #在当前目录查找访问时间恰好在两天前被访问的文件
find . -type f -atime +2 #在当前目录查找访问时间超过两天内被访问的文件
5.按文件大小查找
find . -maxdepth 2 -type f -size +50M #在当前目录查找大小在50M以上的文件,且搜索最大目录深度为2
6.指定忽略的目录进行搜索,需要多个参数配合
find . -path "./test_find" -prune -o -name "*.txt" -print #在当前目录中除了指定路径test_find以外的目录搜索,名字中以.txt结尾的内容并输出
7.使用-ok参数删除找到的文件
find . -type f -name "*.txt" -ok rm {} \; #-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令
Linux xargs 命令
xargs(英文全拼: extended arguments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
1.xargs 也可以将单行或多行文本输入转换为其他格式
[wg@localhost test]$ cat number.txt
1 2 3 4 5
6 7 8 9 10
11 12
[wg@localhost test]$ xargs < number.txt
1 2 3 4 5 6 7 8 9 10 11 12
[wg@localhost test]$ xargs -n 3 < number.txt
1 2 3
4 5 6
7 8 9
10 11 12
#多行变单行出个数
#限制每行输出个数
2.将查找的内容移动到tmptxt目录下,{}指代查找到的内容。
find . -name "*.txt" | xargs -i mv {} tmptxt/
3.将查找的内容移动到tmptxt目录下,将找到的内容命名为alltxt。
find . -name "*.txt" | xargs -I alltxt mv alltxt tmptxt/
通配符在查找文件时十分常用。
常见通配符有下面的几种:
通配符 | 作用 |
---|---|
* | 匹配任意,0or多个字符串 |
? | 匹配任意一个且仅一个字符 |
符号集合 | 匹配指定的一堆字符或文本 |
[abdf] | 匹配abdf中的任意一个字符 |
[a-z] | 匹配a到z之间的任意一个字符,要求是连续字符,也可以是连续的数字,比如[1-9] |
[!abdf] | 不匹配括号中的任一字符 |
[!a-f] | 不匹配a-f中的任一字符 |
[^a-f] | !可以换做^ |
下面是一些特殊通配符:
符号 | 作用 |
---|---|
[[:upper:] | 所有大写字母 |
[[:lower:] | 所有小写字母 |
[[:alpha:]] | 所有字母 |
[[:digit:]] | 所有数字 |
[[:alnum:]] | 所有字母和数字 |
[[:space:]] | 所有空白字符 |
[[:punct:]] | 所有标点符号 |
1.从根目录开始全盘搜索最大目录深度为3的,名字以l开头以小写字母结尾且中间有一个其他任意字符的内容
find / -maxdepth 3 -name "l?[a-z]"
find / -maxdepth 3 -name "l?[[:lower:]]"
2.找出/tmp下的以非字母开头,后面跟着一个字母以及其他任意长度的字符的文件
find /tmp -type f -name "[!a-zA-Z][a-zA-Z]*"
3.移动/tmp下所有以非字母开头的文件,到/tmp/allnum下
mv /tmp/[!a-zA-Z]* /tmp/allnum
tar、gzip、zip命令
tips:Linux file命令用于辨识文件类型。
[wg@localhost test]$ file ip.txt
ip.txt: ASCII text
Linux 常用的压缩与解压缩命令有:tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar 等。
最常用的打包命令是Linux tar 命令 ,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了.
1.打包当前文件夹下的所有txt结尾的文件
tar -cvf alltxt.tar ./*.txt #其中-v用于显示执行过程,-cf一般一起使用,c创建一个新的归档文件来保存指定的文件和目录,-f参数指定存档文件的名称。
2.tar仅仅是打包起来但是并没有压缩
tar -xvf ./alltxt.tar.gz ./ #将当前目录下的alltxt.tar拆到当前目录。
3.将当前目录所有内容打包并压缩
tar -czvf all.tar.gz ./* #.tar.gz是为了告诉别人进行了压缩,应当如何进行解压
4.将上层目录的.tar.gz文件解压到当前目录
tar -xzvf .。/all.tar.gz ./
5.不解压并显示压缩文件中的内容。之后单独解压其中的某一文件
tar -ztvf all.tar.gz
tar -zxvf all.tar.gz ./test.txt #将压缩文件中的test.txt单独拿出来
6.使用-C参数指定目录解压缩
tar -zxvf all.tar.gz -C ./all/ #将文件解压到指定的/all目录下
Linux gzip 命令 用于压缩文件。
1.对当前目录下的所有txt文件进行gzip压缩
[wg@localhost test]$ ls
chongdingxiang.text gushi.txt LinuxBook.pdf new.txt readonly.sh test.sh
douyin.txt ip.txt name.txt number.txt sort.txt
[wg@localhost test]$ gzip ./*.txt
[wg@localhost test]$ ls
chongdingxiang.text ip.txt.gz new.txt.gz sort.txt.gz
douyin.txt.gz LinuxBook.pdf number.txt.gz test.sh
gushi.txt.gz name.txt.gz readonly.sh
2.-l参数列出压缩文件内容
gzip -l ./ip.txt.gz
Linux zip 命令 用于压缩文件。
1.压缩当前目录下所有内容到all.zip
zip all.zip ./*
2.解压缩
unzip all.zip
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现