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

文件及目录类

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

bash 复制代码
ls [-参数] [name...]

# 列出所有根目录
ls /

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

参数:

-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)

-d 只列出目录(不递归列出目录内的文件)。

-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。

-r 倒序显示文件和目录。

-t 将按照修改时间排序,最新的文件在最前面。

-A 同 -a ,但不列出 "." (目前目录) 及 "..." (父目录)

-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

-R 递归显示目录中的所有文件和子目录。

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

bash 复制代码
pwd [--help][--version]

# 查看当前所在目录
pwd

切换工作目录(cd)

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

cd /usr/bin

创建新目录( mkdir)

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

mkdir folder

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

删除空目录(rmdir)

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

# 删除目录test
rmdir test

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

删除一个文件或者目录

rm:删除文件或目录

rm file_name

rm -r 目录1/test # 递归删除目录及其内容

bash 复制代码
rm [参数] name

rm  test.txt 

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

参数

-i 删除前逐一询问确认。

-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

-r 将目录及以下之档案亦逐一删除。

复制文件或目录(cp)

bash 复制代码
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)

bash 复制代码
mv [参数] source dest

# 文件 aaa 改名为 bbb 
mv aaa bbb

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

参数

-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

-n: 不要覆盖任何已存在的文件或目录。

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

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

bash 复制代码
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)

bash 复制代码
cat [选项] [文件]

# 查看文件内容
cat filename

# 创建文件
cat > filename

参数说明:

-n:显示行号,会在输出的每一行前加上行号。

-b:显示行号,但只对非空行进行编号。

-s:压缩连续的空行,只显示一个空行。

-E:在每一行的末尾显示 $ 符号。

-T:将 Tab 字符显示为 ^I。

-v:显示一些非打印字符。

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

bash 复制代码
# 追加内容进test.txt
echo  内容>> test.txt

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

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

bash 复制代码
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 欲显示内容的文档,可为复数个数

bash 复制代码
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)

bash 复制代码
grep [options] pattern [files]

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

常用参数:

-i:忽略大小写进行匹配。

-v:反向查找,只打印不匹配的行。

-n:显示匹配行的行号。

-r:递归查找子目录中的文件。

-l:只打印匹配的文件名。

-c:只打印匹配的行数。

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

bash 复制代码
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)

bash 复制代码
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:查找在 n
24 小时内状态发生变化的文件(例如权限)。

-mmin n:查找在 n 分钟内被修改过的文件。

-mtime n:查找在 n*24 小时内被修改过的文件。

在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

正数应该表示时间之前,负数表示时间之内。

例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。

关于时间 n 参数的说明:

+n:查找比 n 天前更早的文件或目录。

-n:查找在 n 天内更改过属性的文件或目录。

n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

相关推荐
Villiam_AY1 小时前
docker中常用的镜像和容器命令
linux·docker·容器
王军新2 小时前
Ubuntu把应用程序放到桌面
linux
monstercl2 小时前
【服务器】Ubuntu22.04配置静态ip
linux·运维·服务器·tcp/ip·ubuntu
怎么昵称都被占用啊3 小时前
【Linux系统环境中使用二进制包安装Apache】
linux·运维·apache
我们的五年5 小时前
【C++课程学习】:C++中的IO流(istream,iostream,fstream,sstream)
linux·c++·学习
牛马大师兄5 小时前
网络编程 | UDP套接字通信及编程实现经验教程
linux·网络·网络协议·ubuntu·udp
千千道6 小时前
QT的TCP通讯
linux·服务器·qt·tcp/ip
JaneZJW6 小时前
Linux C编程:文件IO(概念、打开、读、写、关闭)
linux·c语言·stm32·单片机·嵌入式
九州~空城6 小时前
Linux中的基本指令(一)
linux·运维·服务器