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
用于保存需要保留的文件名,一行一个文件名:
例如上面的命令将文件a
、b
、c
、d
保存到文件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)