shell删除文件除xx外_Shell文件操作

认识Linux的文件目录

Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。

Linux文件系统结构是从Unix文件结构演进过来的。常见的Linux顶层文件目录:

目录

用途

/

虚拟目录的根目录。通常不会在这里存储文件

/bin

二进制目录,存放许多用户级的GNU工具

/boot

启动目录,存放启动文件

/etc

系统配置文件目录

/home

主目录,Linux在这里创建用户目录

/lib

库目录,存放系统和应用程序的库文件

/media

媒体目录,可移动媒体设备的常用挂载点

/mnt

挂载目录,另一个可移动媒体设备的常用挂载点

/opt

可选目录,常用于存放第三方软件包和数据文件

/proc

进程目录,存放现有硬件及当前进程的相关信息

/root

root用户的主目录

/sbin

系统二进制目录,存放许多GNU管理员级工具

/run

运行目录,存放系统运作时的运行时数据

/srv

服务目录,存放本地服务的相关文件

/sys

系统目录,存放系统硬件信息的相关文件

/tmp

临时目录,可以在该目录中创建和删除临时工作文件

/usr

用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里

/var

可变目录,用以存放经常变化的文件,比如日志文件

macOS 系统的文件目录也有相似的用途:

f8a2334bdd07

macOS 系统的顶层文件目录

遍历目录

cd destination可将shell会话切换到另一个目录。cd命令可接受单个参数destination,用以指定想切换到的目录名。如果没有为cd命令指

定目标路径,它将切换到用户主目录:[/users/用户名]。destination参数可以用两种方式表示:一种是使用绝对文件路径,另一种是使用相对文件路径。

表示相对文件路径的特殊字符:

单点符(.):表示当前目录;

双点符(..),表示当前目录的父目录。

#切换到绝对文件路径下

cd /usr

#切换到当前目录下的bin,

cd ./bin

#切换到当前目录/usr/bin的父目录usr下的sbin,

cd ../sbin

#连续父目录

cd ../../dev

#切换到用户主目录

cd ~

#查看当前的工作目录

pwd

#展示目录下的文件清单

ls

#查看文件的序列号(inode编号),判断文件是否独立。

ls -i

#展示目下的内容时有效区分文件和目录

ls -F

#展示全部文件包括隐藏文件

ls -a

#递归列举当前目录下包含的子目录中的文件

ls -R

ls -F -R

ls -FR #组合

#展示当前目录文件下的文件或目录的额外信息

ls -l

ls -alF #组合

文件过滤

ls命令能够识别标准通配符,并在过滤器中用它们进行模式匹配:

问号(?):代表一个字符;

星号(*):代表零个或多个字符。

问号可用于过滤器字符串中替代任意位置的单个字符

#?匹配

ls te?t

#*匹配

ls -l te*

#[ ]形式进行特定字符匹配、只匹配test、teit

ls te[si]t

#匹配除了a字符的te?t

ls te[!a]t

#字母范围匹配

ls -l f[a-i]ll

文件处理

touch创建空文件

touch file_one

cp复制文件

cp命令组成:cp source destination

当source和destination参数都是文件名时,cp命令将源文件复制成一个新文件,并且以 destination命名。

如果目标文件已经存在,cp命令可能不会提醒这一点。最好是加上-i,强制shell询问是否需要覆盖已有文件。

#复制文件

cp one two

#复制文件到某个路径下

cp one app/

#复制app/two到当前目录

cp app/two .

mv移动、重命名文件

在Linux中,重命名文件称为移动(moving)。mv命令可以将文件和目录移动到另一个位置或重新命名。

如果目标文件已经存在,和cp命令类似,也可以在mv命令中使用-i参数。

#重命名文件one -> two

mv one two

#移动文件到另一个目录下,完成后原目录不会存在two

mv two app/

mv -i three app/

rm删除文件

在Linux中,删除(deleting)叫作移除(removing),bash shell中删除文件的命令是rm。

#移除文件,会有移除提示。

rm -i app/one

#直接移除文件

rm app/one

#强制移除

rm -f app/one

目录处理

mkdir创建目录

#当前目录下新建一个new_dir的目录

mkdir new_dir

#当前目录下新建多级子目录

mkdir -p new_dir/sub1/sub2

rmdir删除目录

删除目录,可能会发生许多误操作,所以shell会尽可能的防止我们捅娄子。

默认情况下,rmdir命令只删除空目录。

#创建

mkdir new_dir

#切换

cd new_dir

#创建文件

touch one

#返回父目录

cd ..

#执行删除

rmdir new_dir

#terminal报错

rmdir: new_dir/: Directory not empty

所以rmdir欲删目录,必先成空。

#删除文件

rm -i new_dir/one

#删除目录

rmdir new_dir

也可以在非空目录上使用rm -r命令,该命令可以向下进入目录,删除其中 的文件,然后再删除目录本身。当需要删除大量目录和文件时,这种方式很有效。

#每一个子目录层次结构都会进行文件检查的提醒。

rm -ir new_dir

rm -ri new_dir

#直接删除不会提醒的命令

rm -r new_dir

一口气删除目录及其所有内容的终极大法就是使用带有-r参数和-f参数的rm命令。

#强制删除子目录中的文件,最后删除目录

rm -rf new_dir

查看文件内容

file查看文件类型

#查看文件类型

file app.sh

#输出

app.sh: ASCII text

#查看目录

file new_dir

#输出

new_dir: directory

#查看pptx

file XX.pptx

#查看pdf

file XX.pdf

#输出

XX.pdf: PDF document, version 1.4

#输出

XX.pptx: Microsoft PowerPoint 2007+

cat查看整个文件

#显示app.sh中的文件内容

cat app.sh

#显示app.sh中的文件内容并添加行号

cat -n app.sh

cat命令的主要缺陷是:一旦运行,你就无法控制后面的操作。

于是出现了more命令,它会允许分页显示。还有一个more命令的升级版less,至于为啥less,不过是文字游戏而已。

#分页查看文本文件

less page.js

more page.js

tail部分查看文件

tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行。

有文件log内容为line 1~20,进行文件部分查看

#默认执行末尾查看

tail log #显示line 11~20

#指定查看末尾3行

tail -n 3 log #显示line 18~20

tail -3 log #显示line 18~20

head部分查看文件

head命令,会显示文件开头那些行的内容。默认情况下,它会显示文件前10行的文本。

#默认执行开头查看

head log #显示line 1~10

#指定查看开头3行

head -n 3 log #显示line 1~3

head -3 log #显示line 1~3

grep文件数据搜索

grep命令的格式:grep [options] pattern [file]。

改变上文log文件为1-10的英文,使用grep 搜索

#从log文件中找出与`ne`相关的文本

grep ne log #输出one 、nine

进行反向搜索(输出不匹配该模式的行),可加-v参数:

#从log文件中找出与`ne`不相关的文本

grep -v ne log #输出除one 、nine之外数字的英文。

显示匹配到的文本所在的行号,可加-n参数。

grep -n ne log #输出: 1:one 、9:nine

只显示有多少行含有匹配的模式,可用-c参数。

grep -c ne log #输出:2

同时指定多个匹配模式,可用-e参数来指定每个模式。

#匹配s、ne

grep -e s -e ne log

grep -n -e s -e ne log #带行号

#反向匹配

grep -v -e s -e ne log

使用正则匹配模式

grep [s] log

参考资料:

Linux命令行与shell脚本编程大全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值