1. 查找文件
按照文件名查找
命令格式:
find 搜索路径 [选项] 搜索内容
选项:
- -name: 按照文件名搜索;
- -iname: 按照文件名搜索,不区分文件名大小;
- -inum: 按照 inode 号搜索;
例子:查找一个名字为best_model_mae-56.49_epoch-788.pth的文件
find ./ -name best_model_mae-56.49_epoch-788.pth
2. 统计
统计文件行数
- wc -l filename 就是查看文件里有多少行
- wc -w filename 看文件里有多少个word。
- wc -L filename 文件里最长的那一行是多少个字。
3. 文件操作
复制时排除某些文件夹
将当前文件夹下除了test2.py之外所有的文件复制到/home/duni/copy_test中
cp `ls |grep -v test2.py|xargs` /home/duni/copy_test
其中:
- 首先通过ls命令获取需要被复制的文件夹路径
- 然后通过grep命令的-v选项,获得不符合'test2.py'匹配的路径名
- xargs是防止参数过多报错
- 然后就是cp命令了
创建、删除和修改软链接
1. 创建时,可以使用
ln -s 【目标目录】 【软链接地址】
2. 删除时
rm -rf 【软链接地址】
上述指令中,软链接地址最后不能含有“/”,当含有“/”时,删除的是软链接目标目录下的资源,而不是软链接本身。
3. 修改
ln -snf 【新目标目录】 【软链接地址】
4. shell
获取shell脚本所在目录的父目录
PARENT_DIR=$(cd $(dirname $0);cd ..; pwd)
其中:
- $0 是shell脚本的名字
- dirname是获得目录的命令
- $() 是执行括号中的命令
设置别名,简化敲入常用
在~/.bashrc中加入:
alias ca='conda activate'
就可以用ca代替conda activate了
5. 进程操作
按照条件杀掉一些进程
多进程训练时,如果出错了按ctrl+c并不会自动退出所有进程。如果想杀掉这些僵尸进程,需要手动敲命令,一个个很繁琐。因此就想到了结合ps和awk命令来实现这一过程。接下来举个例子:杀掉xocean用户的所有命令中包含cuda121字段的进程,命令操作如下:
ps -o pid,cmd -u xocean | grep cuda121 | awk '{print $1}' | xargs kill -9
这里解释一下,-e代表显示所有进程,-o指定输出格式为pid和命令,-u指定了只输出用户为xocean的进程信息,awk '{print $1}' 值得是用awk处理上一步的输出结果,使用默认分隔符(空格)来分割每一行,$1代表分割后的结果的第一个元素(也就是pid)。xargs将前面的pid结果送入后面的kill -9 命令执行