shell脚本中的一些文件操作

if [ $# -ne 1 ];then
echo "usage: argument 1: 请输入第一个参数"
exit 1
#如果输入的参数少于1个则会在console中打出提示,并退出程序
fi #结束if
path=${1}#将第一个参数赋值给path
for dir in ${ls ${path}}
do
path2=${path}${dir} $创建完整路径
cd ${path2} #进入路径
mv *.jpg xx.jpg #改名字
echo ${dir}"修改名字完成" #在控制台输出信息,可以在后面直接加"字符串"
done
#用下面这一句就可以打出所有目录名
#ls -l | grep "^d" | cut -d " " -f 10
#ls -l | grep "^d" 取出以d开头的所有字段
#cut -d " " -f 10 取出以" "为分割的第10个数
awk是行处理器
awk处理过程:依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
'  '          引用代码块
BEGIN   初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
//           匹配代码块,可以是字符串或正则表达式
{}           命令代码块,包含一条或多条命令
;          多条命令使用分号分隔
END      结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息


ls -l ${filepath} |awk '/^d/ {print $NF}' #输入文件夹下的所有文件名
#批量替换:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'
#批量替换2 :sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
命令格式:
wc [选项] 文件...
命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。
如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
命令参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
#判断文件是否存在
if [ ! -f ./${imgname}.txt ];then
[ -d $dir ] #判断是否是文件路径
#判断在哪个范围之内
if [ ${lineNum} -gt 8 -a ${lineNum} -le 12 ];then
expr ${lineNum} - ${originNum} #expr 算出运算符 也可以是正则表达式[详](https://www.cnblogs.com/f-ck-need-u/p/7231832.html)
sed 批量替换文件内容:  用sed命令可以批量替换多个文件中的字符串
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
对多个文件的处理可能不支持,需要用 xargs, 搞定。
grep oldString -rl /path | xargs sed -i "s/oldString/newString/g"
find . -name 53hhgsave.xml | xargs sed -i

sed命令详解

#批量修改文件名
perl -pi -e "s|${namebefore}|${namechangeto}|g" $path/$file

你可能感兴趣的:(C++)