百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux 常用命令——文件目录篇(保姆级说明)

sinye56 2025-02-08 12:46 10 浏览 0 评论

文件及目录类

列出当前目录中的文件和子目录(ls)

ls [-参数] [name...]

# 列出所有根目录
ls /

# 列出所有txt文件
ls *.txt

参数: -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) -d 只列出目录(不递归列出目录内的文件)。 -l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。 -r 倒序显示文件和目录。 -t 将按照修改时间排序,最新的文件在最前面。 -A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 “*“, 目录则加”/” -R 递归显示目录中的所有文件和子目录。

显示当前工作目录的路径(pwd)

pwd [--help][--version]

# 查看当前所在目录
pwd

切换工作目录(cd)

# dirName:要切换的目标目录,可以是相对路径或绝对路径。
cd [dirName]

cd /usr/bin

创建新目录( mkdir)

# -p 确保目录名称存在,不存在的就建一个。
mkdir [-p] dirName

mkdir folder

# folder目录下建立test文件夹,加了-p参数后,若folder不存在则直接新建。
mkdir -p folder/test

删除空目录(rmdir)

# -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
rmdir [-p] dirName

# 删除目录test
rmdir test

# 递归删除目录
rmdir -p 目录1/test

删除一个文件或者目录

rm:删除文件或目录 rm file_name rm -r 目录1/test # 递归删除目录及其内容

rm [参数] name

rm  test.txt 

# 删除目录必加参数r
rm  -r  homework  

参数 -i 删除前逐一询问确认。 -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -r 将目录及以下之档案亦逐一删除。

复制文件或目录(cp)

cp [选项] 源文件 目标文件

# 复制文件并重命名
cp file.txt /path/to/destination/newfile.txt

# 递归复制目录及其内容
cp -r /path/to/source_dir /path/to/destination/

参数 -r 或 -R:递归复制目录及其内容(用于复制目录)。 -i:交互模式,覆盖前提示用户确认。 -f:强制复制,覆盖目标文件而不提示。 -v:显示详细的复制过程(verbose)。 -p:保留文件的原始属性(如权限、时间戳等)。 -a:归档模式,等同于 -dpR,保留所有文件属性和递归复制目录。 -u:仅当源文件比目标文件新时才复制(更新模式)。 -l:创建硬链接而不是复制文件。 -s:创建符号链接(软链接)而不是复制文件。

移动或重命名文件或目录(mv)

mv [参数] source dest

# 文件 aaa 改名为 bbb 
mv aaa bbb

# info 目录放入 logs 目录中
mv info/ logs

参数 -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。 -n: 不要覆盖任何已存在的文件或目录。 -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

创建空文件或更新文件的时间戳(touch)

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

# 修改文件"testfile"的时间属性为当前系统时间
touch testfile              

参数: a 改变档案的读取时间记录。 m 改变档案的修改时间记录。 c 假如目的档案不存在,不会建立新的档案。与 –no-create 的效果一样。 f 不使用,是为了与其他 unix 系统的相容性而保留。 r 使用参考档的时间记录,与 –file 的效果一样。 d 设定时间与日期,可以使用各种不同的格式。 t 设定档案的时间记录,格式与 date 指令相同。 –no-create 不会建立新档案。 –help 列出指令格式。 –version 列出版本讯息。

连接和显示文件内容(cat)

cat [选项] [文件]

# 查看文件内容
cat filename

# 创建文件
cat > filename

参数说明: -n:显示行号,会在输出的每一行前加上行号。 -b:显示行号,但只对非空行进行编号。 -s:压缩连续的空行,只显示一个空行。 -E:在每一行的末尾显示 $ 符号。 -T:将 Tab 字符显示为 ^I。 -v:显示一些非打印字符。

将文本输出到标准输出(echo)

# 追加内容进test.txt
echo  内容>> test.txt

# 显示字符串
echo "Hello, World!"

逐页显示文本文件内容(more/less:)

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

# 逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示
more -s testfile

# 从第 20 行开始显示 testfile 之文档内容。
more +20 testfile

参数: -num 一次显示的行数 -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声 -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能 -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上) -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料 -s 当遇到有连续两行以上的空白行,就代换为一行的空白行 -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同) +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示 +num 从第 num 行开始显示 fileNames 欲显示内容的文档,可为复数个数

less [参数] 文件 

# 查看文件
less log2013.log

# ps查看进程信息并通过less分页显示
ps -ef |less

参数: -b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o <文件名> 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x <数字> 将”tab”键显示为规定的数字空格 /字符串:向下搜索”字符串”的功能 ?字符串:向上搜索”字符串”的功能 n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关) b 向上翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一页 回车键 滚动一行 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页

在文件中搜索指定文本(grep)

grep [options] pattern [files]

# 在文件 file.txt 中查找字符串 "hello"
grep hello file.txt

常用参数: -i:忽略大小写进行匹配。 -v:反向查找,只打印不匹配的行。 -n:显示匹配行的行号。 -r:递归查找子目录中的文件。 -l:只打印匹配的文件名。 -c:只打印匹配的行数。

修改文件或目录的权限(chmod)

chmod [-cfvR] [--help] [--version] mode file

# 将文件 file1.txt 设为所有人皆可读取 
chmod a+r file1.txt
chmod 777 file1.txt

参数: u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

chmod也可以用数字来表示权限 r=4,w=2,x=1 若要 rwx 属性则 4+2+1=7; 若要 rw- 属性则 4+2=6; 若要 r-x 属性则 4+1=5。

-c : 若该文件权限确实已经更改,才显示其更改动作 -f : 若该文件权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) –help : 显示辅助说明 –version : 显示版本

在文件系统中查找文件和目录(find)

find [路径] [匹配条件] [动作]

# 查找当前目录下名为 file.txt 的文件:
find . -name file.txt

# 查找 /home 目录下大于 1MB 的文件:
find /home -size +1M

参数:

路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。

匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份: -name pattern:按文件名查找,支持使用通配符 * 和 ?。 -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。 -size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。 -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。 -user username:按文件所有者查找。 -group groupname:按文件所属组查找。 动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。

find 命令中用于时间的参数如下:

-amin n:查找在 n 分钟内被访问过的文件。 -atime n:查找在 n24 小时内被访问过的文件。 -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。 -ctime n:查找在 n24 小时内状态发生变化的文件(例如权限)。 -mmin n:查找在 n 分钟内被修改过的文件。 -mtime n:查找在 n*24 小时内被修改过的文件。 在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

正数应该表示时间之前,负数表示时间之内。 例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。 关于时间 n 参数的说明: +n:查找比 n 天前更早的文件或目录。 -n:查找在 n 天内更改过属性的文件或目录。 n:查找在 n 天前(指定那一天)更改过属性的文件或目录。




相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&amp;配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: