CV 算法工程师常用 shell 命令 15 条
CV 算法工程师作为耗时间耗蓝条的工种,工作效率不提升就会整日淹没在脚本里,分享 15 个常用 shell 命令,每个都可以举一反三,也可以添加到 alias,给短暂的生命续一秒。
- 递归统计目录下的文件数目
ls -lR | grep "^-" | wc -l
- 递归找出目录下所有的 JPG 图片, 可通过管道输入到文件
find $PWD | xargs ls -d | grep ".jpg$"
- 循环执行某个命令
while true; do $do_something; date; sleep 10; done
- 查看 GPU 状态及相关进程
nvidia-smi | tee /dev/stderr | awk '/ C / {print $3}' | xargs -r ps -up
- 时间戳转换
date -d @1590044013
# Thu May 21 14:53:33 CST 2020
- 遍历当前文件下,对特定文件/目录执行某个操作
for f in $(ls $PWD); do if [ "${f##*.}"x = "mp4"x ]; then $do_something; fi ; done
- 提高 PATH 相关变量打印的可读性
echo -e ${PATH//:/\\n}
- AVI 转 MP4
ffmpeg -i sample.avi -c:v libx264 -pix_fmt yuv420p sample.mp4
- 随机返回文本里 10 行
shuf -n 10 sample.txt
- 查找目标在第几行
grep -n 'my_target_string' sample.txt
- 按照 1/10 均匀抽取
sed -n ‘1~10p’ sample.txt > sample.10in1.txt
- 通过文本(存放相对路径)指定需要同步的文件
rsync -avz —files-from=sample.txt . username@ip:/path/to/remote
- 文本里的相对路径转成绝对路径
sed -i "s#^#$PWD#" sample.txt
- 将当前目录下的所有任意命名的图片转成视频(注意 shape,yuv 参数)
input=/path/to/input
output=/path/to/output.mp4
ffmpeg -y -r 16 -f image2 -s 1280x720 -pattern_type glob \
-i $input/\*.jpg -vf \
drawtext="fontfile=/usr/share/fonts/open-sans/OpenSans-Regular.ttf: text='%{frame_num}': fontcolor=red: fontsize=40: x=(w-tw)/2: y=0.95*h" \
-vcodec libx264 -crf 8 -pix_fmt yuv420p $output
- 视频拼接
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]pad=iw:ih*2[a];[a][1:v]overlay=0:h" vert.mp4 # 上下拼接
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w" hori.mp4 # 左右拼接
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" grid.mp4 # 四宫格
有爱自取,里面的命令都可以灵活使用,遇到问题就留言~
本作品采用《CC 协议》,转载必须注明作者和本文链接