其他相关博文:
目录
更多精彩博文详见:
一、文件管理
1、ls
ls命令用来列出指定目录下的文件及子目录,如果不指定目录则列出当前目录下的文件及子目录。语法格式如下:
ls [选项] [路径或文件]
- -a:列出指定目录下的所有文件及子目录,包含隐藏文件。Linux系统将“.”开头的文件或目录视为隐藏文件。
- -A:显示除隐藏文件“.”和“..”以外的所有文件列表;
- -l:列出指定目录下的文件及子目录的权限等详细信息,不包含隐藏文件。
- -F:在每个输出项后追加特殊文件的类型标识符。具体含义为:“*”表示具有可执行权限的文件;“/”表示目录;“@”表示符号链接;“|”表示命令管道FIFO;“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符。
- -c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的依据是文件的状态改变时间;
- -i:显示文件索引节点号(inode),一个索引节点代表一个文件。
- -m:用“,”号区隔每个文件和目录的名称;
- -n:以用户识别码和群组识别码替代其名称;
- -r:以文件名反序排列并输出目录内容列表;
- -s:显示文件和目录的大小,以区块为单位;
- -t:根据文件和目录的更改时间排序;
以上选项可以根据实际情况组合使用。
2、touch
touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,则会新建一个新的文件。语法格式如下:
touch [选项] [文件名称或目录名称]
- -a:改变文件的访问时间(atime)。
- -m:改变文件的修改时间(mtime)。
- -d:使用指定的时间字符串来设置时间戳。例如:touch -d "2021-12-31 23:59:59" test.txt
- -t:使用指定的时间格式(如[[CC]YY]MMDDhhmm[.ss])来设置时间戳。例如touch -t 202310011200.00 file.txt会将文件的时间戳设置为2023年10月1日12时0分。
- -r:使用指定文件的时间戳来设置目标文件的时间戳。例如,touch -r test01.txt test02.txt会将test02.txt的时间戳设置为test02.txt的时间戳。
- -c:如果文件不存在,不要创建新文件。
(1)、创建空文件
创建一个空文件test.txt
[elasticsearch@node01 data]$ touch test.txt
[elasticsearch@node01 data]$ ls -l
(2)、更新文件的访问和修改时间
更新test.txt的访问和修改时间为当前时间。
[elasticsearch@node01 data]$ touch test.txt
[elasticsearch@node01 data]$ ls -l
(3)、指定时间字符串更新文件的时间戳
更新文件test.txt的时间戳为2025-03-18 12:00:00
[elasticsearch@node01 data]$ touch -d "2025-03-18 12:00:00" test.txt
(4)、指定时间字符串改变文件的修改时间(mtime)
更新文件test.txt的修改时间为2025-03-18 14:30:00
[elasticsearch@node01 data]$ touch -md "2025-03-15 14:30:00" test.txt
[elasticsearch@node01 data]$ ls -l
3、rm
rm命令用于删除一个文件或者目录,语法格式如下:
rm [选项] [文件或者目录命令]
- -i:删除文件前逐一询问确认。
- -f:强制删除文件。
- -r:递归删除目录及目录中的文件。
(1)、删除文件
删除文件test02.txt
- 直接删除
[elasticsearch@node01 ~]$ rm test02.txt
- 删除前确认
[elasticsearch@node01 ~]$ rm -i test02.txt
(2)、删除目录
删除目录必须加参数-r,否则无法删除。
删除目录data
[elasticsearch@node01 ~]$ rm -r data
4、mv
mv命令用于文件、目录更改名称,或者用于文件、目录移动位置,语法格式如下:
mv [选项] [源文件名称 | 源目录名称] [目标文件名称 | 目标目录名称]
- -b:若目标文件或目标目录存在,则先备份再执行覆盖操作。
- -i:若移动的源文件或源目录与目标文件或目标目录同名,则先询问是否覆盖。输入 y 表示覆盖,输入 n 表示取消操作。
- -f:若移动的源文件或源目录与目标文件或目标目录同名,强制覆盖。
- -n:不要覆盖任何已存在的文件或目录。
(1)、修改文件名称
修改文件test01.txt 为 test.txt
[root@node01 data]# mv test01.txt test.txt
(2)、修改目录名称
修改目录/root/data/data 为 /root/data/data_test
[root@node01 data]# mv /root/data/data /root/data/data_test

(3)、移动文件
移动文件/root/data/test.txt 至 目录/root/data/data_test/下
[root@node01 data_test]# mv /root/data/test.txt /root/data/data_test/
(4)、移动目录
移动目录/root/data/data_test/ 至 目录/root/下
[root@node01 ~]# mv /root/data/data_test/ /root/
5、cp
cp命令用于本地将文件或者目录复制到另一个目录下,语法格式如下:
cp [选项] [源文件名称 | 源目录名称] [目标文件名称 | 目标目录名称]
- -r或-R:递归复制目录及其子内容(用于复制目录)。
- -i:文件或目录覆盖前提示用户确认。
- -f:强制覆盖目标文件或者目标目录。
- -p:保留文件或者目录的原始属性(如权限、时间戳等)。
(1)、复制文件
1)复制文件
复制文件/root/data_test/test.txt 至 目录/root/下
[root@node01 ~]# cp /root/data_test/test.txt /root/
2)复制文件并重命名
复制文件/root/data_test/test.txt 为 /root/data_test/test01.txt
[root@node01 data_test]# cp /root/data_test/test.txt /root/data_test/test01.txt

(2)、复制目录
1)复制目录
复制目录/root/data_test/ 至 目录/root/data下
[root@node01 data]# cp -R /root/data_test/ /root/data
2)复制目录并重命名
复制目录/root/data_test/ 为 目录/root/data/data_bak
[root@node01 data]# cp -R /root/data_test/ /root/data/data_bak
6、scp
scp命令用于主机之间复制文件或者目录,语法格式如下:
scp [选项] [源文件名称 | 源目录名称] [username@remote_host:directory | username@remote_host:directory/filename]
- -r:递归复制整个目录。
- -P:指定远程主机的 SSH 端口号。
- -p:保留文件或者目录的修改时间、访问时间和权限等属性。
- -C:启用压缩,可以加快传输速度
- -v:显示详细的调试信息,有助于排查问题。
username是指remote_host主机上的用户。
(1)、复制文件至远程主机
复制本地文件/root/data/data_bak/test.txt 至 远程主机192.168.110.150的目录/root下。
[root@node01 ~]# scp -P 22 /root/data/data_bak/test.txt root@192.168.110.150:/root
192.168.110.150主机上查看:
(2)、复制目录至远程主机
复制本地目录/root/data/data_bak 至 远程主机192.168.110.150的目录/root下。
[root@node01 ~]# scp -r -P 22 /root/data/data_bak root@192.168.110.150:/root
192.168.110.150主机上查看:
(3)、复制远程主机的文件至本地
复制远程主机192.168.110.150上的文件/root/remoteFile.txt 至 本地主机的目录/root/下。
[root@node01 ~]# scp -P 22 root@192.168.110.150:/root/remoteFile.txt /root/
(4)、复制远程主机的目录至本地
复制远程主机192.168.110.150上的目录/root/remoteDir 至 本地主机的目录/root/下。
[root@node01 ~]# scp -r -P 22 root@192.168.110.150:/root/remoteDir /root/
7、find
find命令用于在指定目录下查找文件或者目录,可以使用不同的选项来限制、过滤查找结果。对于查询出来的文件或者目录,还支持执行操作,比如删除、复制等。
语法格式如下:
find [目录] [选项] [-exec [执行命令] {} \;]
-exec说明查询结果后需要执行一个命令," {} "将会被匹配到的文件名或者目录名替代," \; " 表示命令结束。
一般选项:
- -name:按文件名进行匹配查找,支持使用通配符 * 和 ?。
- -type:按文件类型进行匹配查找,如 f(普通文件)、d(目录)、l(符号链接)等。
- -size:按文件大小进行匹配查找,+ 代表大于、- 表示小于指定的文件大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或G(GB)。
- -user:按文件的所有者进行匹配查找。
- -group:按文件的所属组进行匹配查找。
时间选项:
- -amin +/-N:查找在N分钟前(+N)或N分钟内(-N)被访问过的文件。
- -atime +/-N:查找在N天前(+N)或N天内(-N)内被访问过的文件。
- -cmin +/-N:查找在N分钟前(+N)或N分钟内(-N)状态发生变化的文件(例如权限)。
- -ctime +/-N:查找在N天前(+N)或N天内(-N)状态发生变化的文件(例如权限)。
- -mmin +/-N:查找在N分钟前(+N)或N分钟内(-N)被修改过的文件。
- -mtime +/-N:查找在N天前(+N)或N天内(-N)被修改过的文件。
(1)、精确查找文件
查找目录/root/下文件名称为"test.txt"的文件
[root@node01 ~]# find /root -name test.txt
(2)、模糊查找文件
查找目录/root/data_test/下以"t"开头、".txt"结尾的文件
[root@node01 ~]# find /root/data_test/ -name "t*.txt"
(3)、根据文件大小查找文件
查找目录/data/下大于200M的文件。
[root@node01 ~]# find /data/ -size +200M
(4)、根据时间查找文件
1)查找N天内修改过的文件
查找目录/data/下5天内修改过的文件。
[root@node01 ~]# find /data/ -mtime -5
2)查找N天前修改过的文件
查找目录/root下7天前修改过的文件。
[root@node01 ~]# find /root -mtime +7
3)查找指定时间范围内的文件
查找目录/data/下在2025-03-01 至 2025-03-21期间修改过的文件及目录。
[root@node01 ~]# find /data/ -newermt '2025-03-01' ! -newermt '2025-03-21'
(5)、查找文件后执行命令操作
查找/root/data_test/目录下以"t"开头、".txt"结尾且在2025-03-01 至 2025-03-21期间修改过的文件,然后执行删除文件的操作。
[root@node01 ~]# find /root/data_test/ -name "t*.txt" -newermt '2025-03-01' ! -newermt '2025-03-21' -exec rm {} \;
[root@node01 ~]# ll /root/data_test/
特别提醒:
find /root/data_test/ -name "t*.txt" -newermt '2025-03-01' ! -newermt '2025-03-21' -exec rm {} \;
亦可以用
find /root/data_test/ -name "t*.txt" -newermt '2025-03-01' ! -newermt '2025-03-21' | xargs rm -f
代替。
| xargs rm -rf 和 -exec rm -rf {} \; 作用相似。xargs rm -rf 是查出一条结果就删除一条;-exec rm -rf {} \; 是查出所有结果之后作为整体放到{}内进行删除,这样当文件数量较多时,有可能会出现“参数太多”之类的错误。建议选择xargs rm -rf进行删除。
8、du
du命令用于显示目录或者文件占用磁盘空间的大小,语法格式如下:
du [选项] [目录名称 | 文件名称]
-a:显示指定目录下所有的子目录及文件。
-h:文件或者目录的大小以K、M、G为单位显示,提高可读性。
-s:仅显示指定目录或者文件的总大小,而不显示其子目录的大小。
(1)、显示指定文件的大小
显示文件/data/mongodb/mongodb-linux-x86_64-rhel70-4.0.28.tgz的大小。
[root@node01 ~]# du -h /data/mongodb/mongodb-linux-x86_64-rhel70-4.0.28.tgz

(2)、显示指定目录的大小
显示目录/data/mongodb/的大小。
[root@node01 ~]# du -sh /data/mongodb/
(3)、显示指定目录下子目录及文件的大小
显示/data/mongodb/目录下子目录及文件的大小。
[root@node01 ~]# du -sh /data/mongodb/*

(4)、显示指定目录下所有子目录的大小
显示/data/mongodb/目录下所有子目录的大小,不显示文件大小。
[root@node01 ~]# du -h /data/mongodb/
(5)、显示指定目录下的所有子目录及所有文件的大小
显示/data/mongodb/mongodb_27017/目录下所有子目录及所有文件的大小。
[root@node01 ~]# du -ah /data/mongodb/mongodb_27017/

二、文件读取
1、cat
cat命令用来读取文件全部内容并打印输出在终端上,语法格式如下:
cat [选项] [文件]
参数说明:
- -n:显示行号,会在输出的每一行前加上行号。
- -b:显示行号,但只对非空行进行编号。
- -s:压缩连续的空行,只显示一个空行。
- -E:在每一行的末尾显示 $ 符号。
(1)、读取文件
读取文件mongodb.conf
[root@node01 mongodb_27017]# cat mongodb.conf
(2)、读取文件并显示行号
读取文件mongodb.conf
[root@node01 mongodb_27017]# cat -n mongodb.conf

(3)、合并文件
将test02.txt、test03.txt的内容合并到test04.txt。
[elasticsearch@node01 ~]$ cat test02.txt test03.txt > test04.txt
(4)、查看文件最后n行
此处配合管道符“|”与tail命令查看mongodb.conf文件的最后5行
[root@node01 mongodb_27017]# cat mongodb.conf | tail -n 5
2、tac
tac命令用来读取文件全部内容并从最后一行开始打印输出在终端上。
(1)、读取文件
读取文件mongodb.conf
[root@node01 mongodb_27017]# tac mongodb.conf
(2)、查看文件前面n行
此处配合管道符“|”与tail命令查看mongodb.conf文件的前面6行。
可见与cat命令配合,可以查看文件内容的前n行或者后n行。
[root@node01 mongodb_27017]# tac mongodb.conf | tail -n 6
3、more
more命令用于分屏读取输出文件内容,语法格式如下:
more [文件名称]
- 按Enter键:向下滚动一行。
- 按空格键或者Ctrl+F:向下滚动一屏。
- 按Ctrl+B:返回上一屏。
- 按Q键:退出读取文件内容。
例如读取文件elasticsearch.yml
[elasticsearch@node01 config]$ more elasticsearch.yml
4、less
less命令与more类似,也是用于分屏读取文件内容,但less的使用方式更加简便。语法格式如下:
less [文件名称]
- 按向上键:向上滚动一行。
- 按向下键:向下滚动一行。
- 按Q键:退出读取文件内容。
例如读取文件elasticsearch.yml
[elasticsearch@node01 config]$ less elasticsearch.yml
5、head
head命令用于读取文件的前n行内容,默认为输出前10行。语法格式如下:
head [选项] [文件名称]
- -n:指定输出的前n行。
(1)、读取文件
读取文件mongodb.conf,默认输出前10行。
[root@node01 mongodb_27017]# head mongodb.conf
(2)、读取文件前n行
读取文件mongodb.conf,此处输出前15行。
[root@node01 mongodb_27017]# head -n 15 mongodb.conf
6、tail
tail命令可以用于实时查看文件内容的变更,常用在查看实时日志文件内容输出。也可以用于输出文件内容的最后n行内容。语法格式如下:
tail [选项] [文件名称]
-f:实时输出文件的新增内容
-n:输出文件内容的最后n行内容,不加参数默认输出最后十行。
(1)、实时输出文件新增内容
实时输出日志文件mycluster.log的新增内容,当有新的日志内容写入时,会打印输出在终端。
[elasticsearch@node01 eslog]$ tail -f mycluster.log
按Ctrl+C可以退出。
(2)、输出文件最后n行
输出mongodb.conf文件的最后5行内容。
[root@node01 mongodb_27017]# tail -n 5 mongodb.conf
7、grep
grep命令用于查找文件里匹配指定字符串的行,通常用于搜索日志内容等场景。
语法格式如下:
grep [选项] [文件名称 | 目录名称]
- -i:忽略字母大小写进行匹配。
- -v:反向匹配,只输出不匹配的行。
- -n:显示匹配行的行号。
- -r:递归查找当前目录下的文件及子目录中的文件。
- -l:只打印匹配的文件的文件名而不打印匹配行的内容。
- -c:只打印匹配的行数。
- -E:匹配多个字符串,使用字符串间使用"|"分隔。
- --help:显示更多选项。
(1)、单个字符串匹配
查找test01.txt文件中是否有匹配字符串“M18269051009”的行。
[root@node01 data_test]# grep "M18269051009" test01.txt
(2)、单个字符串匹配(忽略大小写)
查找test01.txt文件中是否有匹配字符串“M18269051009”的行,忽略字母大小写。
[root@node01 data_test]# grep -i "M18269051009" test01.txt
(3)、单个字符串反向匹配
查找test01.txt文件中是否有匹配字符串“M18269051009”的行,仅打印不匹配的行内容。
[root@node01 data_test]# grep -v "M18269051009" test01.txt
(4)、单个字符串匹配并打印行号
查找test01.txt文件中是否有匹配字符串“M18269051009”的行,并打印匹配的所在行的行号。
[root@node01 data_test]# grep -n "M18269051009" test01.txt
(5)、单个字符串匹配仅打印匹配行数
查找test01.txt文件中是否有匹配字符串“M18269051009”的行,仅打印匹配的行数。
[root@node01 data_test]# grep -c "M18269051009" test01.txt
(6)、多个字符串匹配
查找test01.txt文件中是否有匹配字符串“M18269051001”与“M18269051009”的行。
[root@node01 data_test]# grep -E "M18269051001|M18269051009" test01.txt
(7)、递归查找目录
递归查找/root/data_test/目录下匹配字符串“M18269051009”的行。
[root@node01 ~]# grep -r "M18269051009" /root/data_test/
(8)、递归查找目录仅输出匹配的文件名称
递归查找/root/data_test/目录下匹配字符串“M18269051009”的行,仅打印出匹配的文件名称。
[root@node01 ~]# grep -rl "M18269051009" /root/data_test/
(9)、标准输入获取内容并过滤输出指定行
从管道符“|”获取输入内容,进行查找匹配字符串。
此处是从管道符“|”获取命令“ps -ef”的输入内容,进行匹配过滤后打印输出结果行,获取dmserver服务进程的详细信息。
[root@node01 ~]# ps -ef | grep -v "grep" | grep dmserver
三、文件夹管理
1、pwd
pwd命令用于显示当前完整目录,语法格式如下:
pwd [选项]
- -L:当前目录为链接目录时,输出链接目录。
- -P:当前目录为链接目录时,输出实际目录(物理路径)
(1)、普通目录
[root@node01 cluster]# pwd
(2)、链接目录
输出当前链接目录
[root@node01 tmp]# pwd -L
输出当前实际目录(物理路径)
[root@node01 tmp]# pwd -P
2、cd
cd命令用于切换目录,语法格式如下:
cd [路径]
(1)、切换到目录/data/Elasticsearch
[root@node01 ~]# cd /data/Elasticsearch
(2)、切换到上级目录
[root@node01 bin]# cd ../
[root@node01 elasticsearch-7.12.1]# cd ../../
使用 ../ 表示上级目录,可以通过多次使用 ../ 来切换到更上一级的目录。
(3)、切换到当前用户的主目录(home)
[elasticsearch@node01 bin]$ cd ~
使用 ~ 表示当前用户的主目录(home)
(4)、切换到上次访问的目录
[root@node01 bin]# cd -
3、mkdir
mkdir命令用于创建目录,语法格式如下:
mkdir [参数] [目录名称]
- -p:若父目录不存在,则先创建父目录
- -v:显示目录创建过程
(1)、创建单个路径
此处创建路径 /testDir/data
[root@node01 ~]# mkdir -pv /testDir/data
(2)、同时创建多个路径
此处同时创建路径 /testDir/data、/testDir/log、/testDir/config
[root@node01 ~]# mkdir -pv /testDir/{data,log,config}
4、rmdir
rmdir命令用于删除一个空目录,语法格式如下:
rmdir [参数] [目录名称]
- -p:若目录被删除后,它的父目录也成为空目录,则一并删除父目录,依次递归。
- -v:显示删除的过程。
(1)、删除一个空目录test
[root@node01 data]# rmdir test/
(2)、级联删除父目录
[root@node01 /]# rmdir -pv testDir/data/test/
注意:使用-p参数时,应该使用相对路径名称,否则会报根路径无法删除的错误。






































































被折叠的 条评论
为什么被折叠?



