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

posted @   ganwong99  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示