linux 命令

文章介绍了在Linux终端中进行文件移动、过滤、重命名,处理大文件(如ls、rm、rsync)、查看命令执行时间、修改系统时间和文件分割的方法,包括使用grep-vKNN排除文件、ls-1./*快速列出大量文件、以及使用timedatectl和split等命令进行精确操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mv

移动文件,排除某些文件命令, 其中grep -v KNN 表示匹配KNN并取反

vincent@ubuntu:~/git/machineLearning$ ls
datingTestSet2.txt  datingTestSet.txt  KNN  kNN.py  kNN.pyc  testDigits  trainingDigits
vincent@ubuntu:~/git/machineLearning$ mv `ls | grep -v KNN` ./KNN/
vincent@ubuntu:~/git/machineLearning$ ls
KNN
vincent@ubuntu:~/git/machineLearning$ cd KNN/
vincent@ubuntu:~/git/machineLearning/KNN$ ls
datingTestSet2.txt  datingTestSet.txt  kNN.py  kNN.pyc  testDigits  trainingDigits
vincent@ubuntu:~/git/machineLearning/KNN$ 

rename

重命名文件,可以使用表达式,例如:rename 's/ /_/g' *,表示将该目录下的所有文件名中的空格替换成_

ls 列出100w个文件

如果一个文件夹下面包含100w个文件,直接使用ls肯定不行,因为默认的ls会在内存中进行排序然后输出。
因此使用ls -f选项可以不排序进行输出,大大节省时间

ls -1 ./* 表示列出当前所有文件,每一行1个文件显示。

rm 删除100w个文件

如果一个文件夹下面包含100w个文件,输入rm ./*会报参数太长的错误。解决办法可以将该文件夹删除(手动狗头)。

如果文件夹中有100w个文件,有几个文件需要保留,其余删除,如何实现这个需求?
解决办法:创建一个文件rentation-list.txt用于保存需要保留的文件名,一行一个文件名:
在这里插入图片描述
例如上面的命令将文件abcd保存到文件rentation-list.txt中。然后创建一个空的文件夹empty

使用rsync -av --delete ./empty/ /目标目录/ --exclude-from=rentation-list.txt

rsync命令:是支持在本地或远程主机上复制文件的工具,会将源目录中的文件同步到目标目录中。此处的源目录empty/,是一个空目录,demo/目录是我们得目标目录,里面有100w个文件。这意味着我们期望将demo/目录同步成empty/目录。

--delete 选项可以删除目标目录中的不在源目录中的文件。即在demo/目录中删除没有出现在empty/目录中出现的文件。而empty/目录是个空目录,没有任何文件,所以demo/目录下的所有文件都会被rsync删除。

--exclude-from选项可以指定一个文件列表,文件列表中的文件会被排除在外。我们的a b c d文件将会保留。
在这里插入图片描述

查看某个命令执行需要多长时间

使用命令time 具体命令 > & /dev/null 就可以实现这个功能

修改系统时间

使用date命令修改系统时间后,系统重启则失效。

原因是,系统中存在三种时钟:

  • Local time(本地时钟):
  • Real time clock(RTC):硬件时钟
  • UTC时钟:协调世界时,标准时间

使用date命令修改时间,只会修改本地时间,所以重启之后系统被硬件时钟又覆盖了。

使用timedatectl命令可以同时查看这三个时间:
在这里插入图片描述

本地时间=UTC时间+时区

正确修改系统时间(方法一)

因此使用date命令修改完成本地时间时候,需要执行:hwclock来同步修改硬件时间,完整的命令如下:

date -s "2024-02-08 00:00:00" && hwclock -w

这样就确保UTC时间和RTC时间是一致的了,然后本地时间正确即可。

正确修改系统时间(方法二)

使用命令:

timedatectl set-time "2024-02-08 00:00:00" 

这样就自动设置了RTC和UTC时间了。

正确修改系统时间(方法三)
使用NTP服务器同步时间

split

linux下文件分割可以通过split命令来实现,可以指定按行数分割按大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。
  在Linux下用split进行文件分割:
  
模式一:指定分割后文件行数

对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。

命令:split -l 300 large_file.txt new_file_prefix
  
模式二:指定分割后文件大小

split -b 10m server.log waynelog
对二进制文件我们同样也可以按文件大小来分隔。
在Linux下用cat进行文件合并:

命令:cat small_files* > large_file

例如将一个BLM.txt文件分成前缀为 BLM_part_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式

先利用wc -l BLM.txt 读出 BLM.txt 文件一共有多少行

再利用 split 命令split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_part

将 文件 BLM.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为BLM_ part,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值