Linux搜索文件&搜索文件名&替换文件内容
1、递归搜索文件内容,如果查找"hello,world!"字符串,可以这样:
grep -rn "hello,world!" *
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
2、搜索文件
find / -name 'pay.html'
/:表示根目录,也可以自己指定搜索的目录。
-name:表示搜索文件名称。
pay.html:搜索的文件名称。
3、批量替换。
替换server.xml文件中的”2020”为”8008”
sed -i 's/2020/8080/g' ./conf/server.xml
批量替换,替换server.xml文件中的”2020”为”8008”,将结果输出到result1.xml
sed -i 's/2020/8080/g' ./conf/server.xml > result1.xml
常用查找文件方法
一、which命令
查找类型:二进制文件;
检索范围:PATH环境变量里面指定的路径中查找;
描述:快速返回某个指定命令的位置信息。
优点:查找速度快
缺点:仅支持二进制文件
例:
二、whereis命令
查找类型:二进制文件,man帮助文件,及源代码文件;
检索范围:/usr目录
描述: 快速返回某个指定命令的位置信息,及其man文件和源代码文件的位置信息(如果存在的话)。
也可以通过参数指定返回某一类查找结果:
-b: 仅查找二进制文件;
-m: 仅查找man帮助文件;
-s: 仅查找源代码文件;
优点:查找速度快
缺点:查找文件类型及范围均有限
例:
三、locate命令
查找类型:所有文件;
检索范围:locatedb数据库;
描述:locate是Linux系统提供的一种快速检索全局文件的系统命令,它并不是真的去检索所以系统目录,而是检索一个数据库文件locatedb(Ubuntu系置/var/cache/locate/locatedb),该数据库文件包含了系统所有文件的路径索引信息,所以查找速度很快。
Linux系统动创建这个数据库,并且每天动更新次,所以对于新变动的文件(如新安装或新拷贝)使locate命令是查不到的。为了避免这种情况,可以在使locate命令之前,先执行一下"sudo updatedb"命令来手动更新数据库。
优点:查找速度快,且支持所有文件类型
缺点:不支持新变动的文件检索,需要手动更新数据库(执行 updatedb 命令 )
例:
四、find命令
查找类型:所有文件;
检索范围:指定路径;
描述:find命令是Linux最强大的查找命令,参数多,用法丰富。
基本用法: find <检索路径> <选项> <搜索内容>
优点:功能强大,且支持组合命令;
缺点:如果指定的检索路径层级复杂,则检索速度较慢
下面是几种用法实例:
1.基础打印操作
find命令默认接的命令是-print,它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔,这样就不会分行了。但是一定要注意,-print0针对的是\n转\0,如果查找的文件名本身就含有空格,则find后-print0仍然会显示空格文件。所以-print0实现的是\n转\0的标记,可以使用其他工具将\0标记替换掉,如xargs,tr等。
注意:如果find命令后没有加命令,那么find查找当前所在的目录进行查找。
2.指定完整的文件名称,也可以使用通配符(正则)进行模糊查找。
默认情况下,该find命令搜索常规文件,但最好指定它以使所有内容更清晰:
常用的两个是-name和-path。
-name可以对文件的basename进行匹配,
-path可以对文件的dirname+basename。查找的文件名最好使用引号包围,可以配合通配符进行查找。
find *.pdf #搜索范围 当前目录(不递归)
find -name "*.pdf" #当前面有参数-name时,后边一定带“ ”。
#搜索范围:对当前目录下所有目录递归搜索
注意:但不能在-name的模式中使用”/“,除非文件名中包含了字符”/“,否则将匹配不到任何东西,因为-name只对basename(基础文件名)进行匹配。
3.根据目录深度搜索
#-maxdepth 和 -mindepth选项可以限制find命令遍历的目录深度
find -maxdepth 2 -mindepth 1 -name "*.pdf"
4.指定文件类型进行查找:
-type d: 查找目录;
-type f: 查找普通文件;
-type l: 查找软链接文件;
一般需要搜索的文件类型就只有普通文件(f),目录(d),链接文件(l)。
5.按特定时间戳查找文件
类unix系统中每个文件都有三种时间戳
访问时间(-atime、-amin):用户最近一次访问文件的时间。
修改时间(-mtime、-mmin):文件最后一次被修改的时间。
元数据更改时间(-ctime、-cmin) :文件权限、所有权等最后一次被修改的时间。
time结尾的选项,其单位为天,min结尾的选项其单位为分钟,这些选项的值都为一个正负整数, 如+7,表示,7天以前被访问过的文件,-7表示7天以内被访问过的文件,7表示恰好7天前被访问的文件。
#要搜索atime一年多以前的文件,我们可以编写如下命令:
find . -type f -atime +365
#如果我们需要查找mtime恰好是5天前的文件,请不要包含+,因为它的意思是“大于”。
find . -type f -mtime 5
#显然,+“大于” -“小于”。所以我们可以搜索ctime5 到 10 天前的文件:
find . -type f -ctime +5 -ctime -10
6.按大小查找文件
#-size选项使我们能够按特定大小查找文件。我们可以将其度量单位指定为以下约定:
b: 512 字节(默认)
c: 字节
w: 两字节字
k: 千字节
M: 兆字节
G: 千兆字节
#类似于按时间戳查找文件,+意思是“大于”和-“小于”。例如,要查找大小在 10 MB 和 1 GB 之间的文件:
find . -type f -size +10M -size -1G
7.按权限或所有权查找文件
#-perm选项find可以帮助我们按特定权限搜索文件:
#如:搜索所有具有 777(读、写、执行)权限的文件
find . -type f -perm 777
# 打印用户www拥有的文件
find -type f -user www
8.找到文件并执行命令
find . -type f -atime +365 -exec rm -rf {} \;
#上面的-exec选项后面的命令是rm -rf,用于删除文件。{}是查找结果的占位符。
#注意:占位符{}非常重要,尤其是在您想删除文件时。因为如果您不使用它,该命令将针对所有文件而不是您刚刚通过该find命令找到的文件执行。
# 结尾 \; 也很重要 命令-exec必须以分号结束 "\"表示转义
相关文章:

【Linux之升华篇】Linux内核锁、用户模式与内核模式、用户进程通讯方式
alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)等。字符设备描述符 struct cdev,cdev_alloc()用于动态的分配 cdev 描述符,cdev_add()用于注。外,还支持语义符合 Posix.1 标准的信号函数 sigaction(实际上,该函数是基于 BSD 的,BSD。从最初的原子操作,到后来的信号量,从。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的。

shell编程
简单来说“Shell 编程就是对一堆 Linux 命令的逻辑化处理”。

Ubuntu下安装和配置Redis
找到 /ect/redis/redis.conf 文件修改如下:注释掉 127.0.0.1 ,如果不需要远程连接redis则不需要这个操作。使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG。默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设置打开远程访问的功能。执行sudo apt-get install redis-server 安装命令。查看 redis 是否启动,重新打开一个窗口。停止/启动/重启redis。

linux常用操作指令—— 查看磁盘、内存使用情况(df、du、free、top)
显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。当文件系统也确定删除了该文件后,这时候du与df就一致了。实例4:显示目前磁盘空间和使用情况 (最常用)top:“实时查看” ,按。退出 (实时动态显示)

Linux下netstat命令详解&&netstat -anp | grep 讲解
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

Linux命令——根据端口号查进程
查出的数据第二列(16615)是elasticsearch的进程号。通常我们会根据端口号查进程号,或者通过进程号查端口号。linux环境下,我们常常会查询进程号pid。最常用ps -ef |grep xx。根据端口port查进程。根据端口port查进程。根据进程pid查端口。根据进程pid查端口。

第三方消息推送回调Java app消息推送第三方选择
由于最先集成的是极光,因此根据官方给的推送设备区分方式中,选择了使用标签tag来进行区分管理方式,其接口提供了设置和清理标签, 每次设置会覆盖上次的结果,当然这个需要和极光后台进行交互,是异步返回的。5、由于其接口没有使用免费和付费区分,对于接口的访问没有限制,从使用的情况来看,经常会出现不准的情况,并且设置标签的效果其实是添加,导致业务需要改变标签时,需要先清除在设置,然而接口又经常出问题,导致这部分也是一塌糊涂了;如果想使用不受免费版本限制特性的推送服务,可以联系平台提供的商务对接,购买付费版本。

[Ubuntu 22.04] Docker安装及使用
容器的生命周期由用户控制,用户可以选择手动删除容器或让其保留在系统中以供之后使用。选项允许你在容器内部创建一个交互式的终端会话,使你可以像在本地终端一样与容器进行交互。你可以在容器内执行命令,查看输出并输入命令。镜像拉取完成后,可以使用以下命令创建并启动一个基于 Ubuntu 20.04 镜像的容器。列出所有正在运行的容器,并显示它们的容器ID、镜像、命令、创建时间、状态等信息。以下命令可以中止容器,改命令将向容器发送一个停止信号,使其正常停止并退出。这将显示所有容器的列表,包括正在运行的和已停止的容器。

CSS局限属性contain:优化渲染性能的利器
在网页开发中,优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具,可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势,以及如何使用它来优化网页的渲染过程。

Docker exec命令详细使用指南
Docker exec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。本文将详细介绍Docker exec命令的用法和示例,帮助大家更好地理解和使用这个命令。Docker是一种流行的容器化平台,允许我们在容器中运行应用程序。有时候,在容器内执行命令可以帮助我们调试、排查问题或进行其他操作。这就是Docker exec命令发挥作用的时候。本文详细介绍了Docker exec命令的用法和示例。

10个常用python自动化脚本
大家好,Python凭借其简单和通用性,能够为解决每天重复同样的工作提供最佳方案。本文将探索10个Python脚本,这些脚本可以帮助自动化完成任务,提高工作效率。无论是开发者、数据分析师还是仅仅想简化工作流程的普通用户,这些脚本都能提供帮助。

TCP服务器最多支持多少客户端连接
本文从理论和实际两个方面介绍了一个 TCP 服务器支持的最大连接数

C程序的内存空间布局(栈、堆、数据区、常量区、代码区)
较详细的介绍了栈、堆、数据区、常量区、代码区

给服务器开通telnet的流程
但一些特殊场景下,比如要升级ssh,ssh不能用时,需要使用telnet,用过要关闭此服务。需要首先安装,如果telnet-server服务在xinetd之前安装了,要先删除telnet-server,再安装xinetd。安装顺序:xinetd--》telnet--》telnet-server。安装顺序:xinetd--》telnet--》telnet-server。2、卸载rpm包(如果已经安装了,又不清楚顺序,可以都卸载后统一安装)注意:telnet-server服务启动依赖xinetd服务,

如何在Nginx中配置防盗链?
防盗链是一种防止网站资源被非法下载的技术。当用户尝试直接访问一个受保护的资源时,服务器会返回一个403 Forbidden错误,提示用户该资源受到保护,不能直接访问。这样可以避免用户通过搜索引擎或其他方式获取到未经授权的资源。通过以上步骤,我们可以在Linux系统中的Nginx Web服务器中使用Shell脚本实现防盗链的配置。这种方法可以有效地保护网站资源不被非法下载,提高用户体验,同时防止恶意攻击。在实际项目中,我们可以根据实际需求灵活配置受保护资源的URL和处理方式。

使用DockerFile构建镜像与镜像上传
首先Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像。

python基础小知识:引用和赋值的区别
通过引用,就可以在程序范围内任何地方传递大型对象而不必在途中进行开销巨大的赋值操作。不过需要注意的是,这种赋值仅能做到顶层赋值,如果出现嵌套的情况下仍不能进行深层赋值。赋值与引用不同,复制后会产生一个新的对象,原对象修改后不会影响到新的对象。如果在原位置修改这个可变对象时,可能会影响程序其他位置对这个对象的引用

k8s 使用tomcat官方镜像部署集群并解决访问页面404
官方镜像这里有个坑,使用kubectl启动之后,页面报错404,仔细检查发现,是因为tomcat的webapp目录下没有对应的文件,所以连初始界面都无法显示。要想显示,必须要根据官方镜像自己构建一个Dockerfile。根据上面的信息可以看出,该POD部署在k8s-node1上,映射POD的8080端口到master的30088端口上。这里需要将镜像上传到自己搭建的registry,并配置nodes节点都可以正常访问5000端口。三、根据官方镜像自己构建一个一次性就能启动的Tomcat镜像。

Centos系统上安装PostgreSQL和常用PostgreSQL功能
PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE。为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码。

linux切换root用户su - root和su root的区别
通过tty客户端登陆的shell就是login shell,通过在图形界面使用ctrl+shift+t的方式新建的shell是no login shell。登录的流程,会执行 /etc/profile,/etc/profile.d/下定义的*.sh都会执行。su - root,产生一个登录shell去执行后面的指令。no login shell 读取的文件和顺序为:/etc/bashrc和~/.bashrc。su root,产生一个非登录交互shell,非登录交互shell,只执行用户目录下。

Python中如何简化if...else...语句
我们通常在Python中采用if...else..语句对结果进行判断,根据条件来返回不同的结果,如下面的例子。这段代码是一个简单的Python代码片段,让用户输入姓名并将其赋值给变量user_input。我们能不能把这几行代码进行简化,优化代码的执行效率呢?以下是对各行代码的解读。这里使用了or这个逻辑运算符,当user_input不为空时,user_input为真,name就被赋于user_input的值。采用这种方法可以轻松实现if...else语句的简化。我们可以使用一行简短的代码来实现上面的任务。

轻松管理Linux磁盘空间命令:df
通过使用--output选项,可以自定义df命令的输出格式,选择显示的列以及它们的顺序。这对于筛选特定信息以便进一步处理非常有用。本文我们介绍了Linux系统上的df命令,包括基本用法、进阶用法、实际案例和场景应用,以及一些实用技巧和注意事项。df命令是系统管理中的一个重要工具,能够帮助用户有效管理磁盘空间,预防和解决潜在问题。在实际使用中,请根据具体情况选择合适的df命令选项和参数,并结合其他命令,以获取更全面的系统信息。

使用docker部署RStudio容器并结合内网穿透实现公网访问
RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问,从而将 RStudio IDE 的强大功能和工作效率带到基于服务器的集中式环境中。下面介绍在Linux docker中安装RStudio Server并结合cpolar内网穿透工具,实现远程访问,docker方式安装可以避免很多问题,一键安装,如设备没有安装docker,需提前安装docker。

Docker网络配置&网络模式
网络相关概念,子网掩码、网关、规则的介绍及网络模式bridge、host详解,Dockers自定义网络配置

Linux grep命令教程:强大的文本搜索工具(附案例详解和注意事项)
grep(Global Regular Expression Print)命令用来在文件中查找包含或者不包含某个字符串的行,它是强大的文本搜索工具,并可以使用正则表达式进行搜索。当你需要在文件或者多个文件中搜寻特定信息时,grep就显得无比重要啦。

保持Python程序在Linux上持续运行的几种方法
主要是用来定时执行任务的,但你也可以利用它来监控你的Python脚本是否正在运行,并在需要时重新启动它。是一个非常实用的命令,它可以让你的Python脚本在你退出shell后继续运行。总结起来,根据你的具体需求和环境,你可以选择以上任何一种方法来保持Python程序在Linux上的持续运行。使用这些工具,你可以随时断开SSH连接,而不用担心脚本会停止运行。通过这种方式,你可以安全地关闭终端,而脚本会继续在后台执行。这样,你的Python脚本就会作为系统服务运行,并且会在系统启动时自动启动。

linux环境中一次启动多个jar包,并且设置脚本开机自启
我们在通过jar启动项目时,有时候会比较多,启动会比较麻烦,需要编写shell脚本启动,将启动脚本存放在需要启动的jar包路径下。(文档存放在 /home/process_parent )PORTS 端口号,多个用空格隔开MODULES 模块,多个用空格隔开MODULE_NAMES 模块名称,多个用空格隔开。

windows11通过虚拟机安装Ubuntu20.04
window11通过虚拟机VMware Workstation 17 Player安装ubuntu20.04

开发版ubuntu系统上如何进行开机自启(四种方法一览)
如果省略该字段,则 systemd 将默认将当前服务的启动顺序设置为与其他服务无关,即在启动过程中没有任何依赖性关系,服务的启动顺序由系统自行决定。【ExecStart】 关键字段,服务启动命令,指定服务启动时需要执行的命令或脚本【WantedBy】用于指定服务的自动启动级别,在 Linux 系统中,多用户模式是指允许多个用户同时登录并使用系统资源的模式,与之相对的是单用户模式,只有一个用户可以登录并使用系统资源。保存文件的方法根据所使用的编辑器而有所不同,通常是按下特定的键组合,然后选择保存并退出。

你了解计算机网络的发展历史吗?
计算机网络是指将一群具有独立功能的计算机通过被互联起来的,在通信软件的支持下,实现的系统。计算机网络是计算机技术与通信技术紧密结合的产物,两者的迅速发展渗透形成了计算机网络技术。简而言之呢,计算机网络就是实现两台计算机相互沟通的介质。