Linux文件管理命令

发布时间 2023-11-30 11:16:24作者: ganwong99

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 命令结合使用。

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

文件搜索 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/