博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell 第四篇
阅读量:6573 次
发布时间:2019-06-24

本文共 2444 字,大约阅读时间需要 8 分钟。

# 文件校验 md5sum filename # 按数组排序 sort -n filename.txt# 按逆序排序sort -r file.txt# 按月份排序sort -M file.txt   # 按月份排序( 按照一月,二月,三月,这样的顺序排序 )# 判断一个文件是否已经排序#!bin/bash# filenamesort -C file;if [ $? -eq 0 ]; then      echo soredelse      echo unsoredfi #如果要合并两个排序过的文件 sort -m sorted1 sorted2cat  data.txt1 mac    20002 winxp  40003 bsd     10004 linux   1000#有很多方法对这段文本排序#执行用哪一列进行排序sort -nrk 1 data.txt   winxp 4000mac 2000linux 1000bsd 1000# 依据第一列,以逆序形式排序#衣服第二列进行排序sork -k 2 data.txtbsd 1000linux 1000mac 2000winxp 4000# uniq  去重复字符cat uniq .txt | uniqcat uniq.txt | uniq -u  # 只显示未重复过的字符串cat uniq.txt | uniq -c  #为了统计各行在文件中出现的次数cat uniq.txt | uniq -d  #找出文件中重复的行 cat data.txtu:01:gnud:04:linuxu:01:bashu:01:back# 我们需要 01, 04 中间的字符串作为唯一的键盘,可以通过忽略前2个字符(-s 2) 并使用-w 选项(-w 2) 指定用于比较的最大字符数的方式来选定该键sort data.txt | uniq -s 2 -w 2uniq -z file.txt  # 用uniq 命令生成包含0值字节的终止字符的输出uniq -z file.txt | xargs  -0 rm   # 删除所有指定的文件,如果某个文件出现多次,uniq命令只会将这个文件写入stdout一次# 临时文件名temp_file = "/tmp/var.$$"echo $temp_file;# .$$作为添加的后缀会被扩展成当前脚本的进程ID# 生成临时测试文件dd if=/dev/zero bs=100k count=1 of=data.file#分割文件split -b 10k data.file#分割文件添加前缀名split -b 10k data.file -d -a 4 split_file#如果不想默认按照数据块还切割split -l 10 data.file  # 分割成多个文件,每个文件10行# 提取文件扩展名必须借助%file_jpg = "sample.jpg"name=${file_jpg%.*}echo File name Is $name;# ${VAR %.*} 的含义是,删除%右侧的通配符,非贪婪模式# ${VAR%%.*} 从右向左执行贪婪模式匹配# 借助#操作符号,可以提取文件名中的.jpgjpg=${file_jpg#.*}echo $jpg# ${VAR#.*} 是从$VAR中删除位于#右侧的通配符,通配符从左向右进行匹配# ${VAR##*.}  贪婪模式# 实现批量重命名shell脚本#!/bin/bash#filename rename#初始化变量count=1 #循环所有文件夹内的jpg文件for img in *.jpg        do                # 生成新文件名                new=image-$count.${img##*.}               #移动文件 2> /dev/null 标准错误指向空,防止打印到终端                mv "$img" "$new" 2> /dev/null              # 如果通配符*.jpg 没有匹配到人和图像文件,那么shell会将通配符接是为字符串。从上面的输出可以看到不存在的.jpg文件,因此              # 如果 mv *.jpg image-x.jpg 肯定会产生错误,if ( $? -eq ] 检查退出状态($?) 如果最近执行的命令没有错误,那么$?的值是0,否则             #  会返回非零值,当mv命令出错时也会返回非0值,防止产生 Renameing file 为空,计数也相加                if [ $? -eq 0 ];                then                        echo "Renameing $img to $new"                        let count++                fidone将*.JPG 更名卫*.jpgrename *.JPG *.jpg将文件名中的空格替换为_rename 's/ /_/g' *# 's/ /_/g' 用于替换文件名, 而* 用于匹配文件名的通配符文件名转换大小写rename 'y/A-Z/a-z/' *rename 'y/a-z/A-Z/ * 为了将mp3文件转移定的目录,可以使用find path  -type f -name "*.mpe" -exec mv {} target_dir \;将所有的文件名中的空格替换为字符_find path -type f -exec rename '/s /_/g' {} \/;

转载于:https://my.oschina.net/wangdk/blog/136159

你可能感兴趣的文章
关于异常的合理处理方式
查看>>
javascript ES3小测试
查看>>
Android - Animation(二)
查看>>
Android6.0指纹识别开发
查看>>
Lucene简介
查看>>
Hibernate概述
查看>>
任务调度器配置文件
查看>>
【JavaScript吉光片羽】--- 滑动条
查看>>
ORACLE 存储过程异常捕获并抛出
查看>>
arcgis api for js之echarts开源js库实现地图统计图分析
查看>>
Microsoft JDBC Driver 4.0 for SQL Server
查看>>
delphi2010中FastReport的安装方法
查看>>
总结新浪friendship接口
查看>>
HDU 4293 Groups (线性dp)
查看>>
博客园博客美化相关文章目录
查看>>
excel中如何批量将所有的网址设为超链接
查看>>
Nodejs学习笔记(十二)--- 定时任务(node-schedule)
查看>>
加密算法使用(五):RSA使用全过程
查看>>
root用户重置其他密码
查看>>
C#------如何获取本机IP地址
查看>>