Linux利用sed批量修改文件名

初始文件名

# ls -lh
total 5.5G
-rw-r--r-- 1 root root 193K Sep 28 09:38 20180908.txt
drwxr-xr-x 2 root root 4.0K Mar  7 16:37 batch
-rw-r--r-- 1 root root 160M Mar 13 16:35 batch_dispatcher.log.1
-rw-r--r-- 1 root root  17M Jan  8 12:00 batch_gen_scheduler.log.1
-rw-r--r-- 1 root root 3.5G Mar 13 16:36 batch_scheduler.log.1
-rw-r--r-- 1 root root 329M Jan 25 10:11 batch_scheduler_test.log.1
drwxr-xr-x 2 root root 4.0K Jan 21 13:54 batch_test
-rw-r--r-- 1 root root  30M Jan 25 10:10 batch_test_dispatcher.log.1
-rw-r--r-- 1 root root 137M Mar 13 16:29 boss_bi_access.log.1
-rw-r--r-- 1 root root  86M Mar 13 16:29 boss_bi_error.log.1
-rw-r--r-- 1 root root 185M Mar 13 14:32 boss_channel_access.log.1
-rw-r--r-- 1 root root  96M Mar 13 14:32 boss_channel_error.log.1
-rw-r--r-- 1 root root  77K Jan 21 14:45 monitor_once.log.1
-rw-r--r-- 1 root root 638M Mar 13 16:35 monitor_scheduler.log.1
-rw-r--r-- 1 root root  26M Dec 10 22:00 yqb_job.log.1
drwxr-xr-x 2 root root 4.0K May 29  2018 zhongcai
-rw-r--r-- 1 root root 348M Mar 13 16:35 zhongcai_scheduler.log.1
-rw-r--r-- 1 root root 688K Jan 28 10:51 zhongcai_test_access.log.1
-rw-r--r-- 1 root root 538K Jan 29 11:23 zhongcai_test_error.log.1
drwxr-xr-x 2 root root 4.0K Aug 21  2018 zhongcai_v1.4

需要将.log.1结尾的文件更改为.log
命令如下:

# for file in $(ls -lh | awk ‘$NF~/log/{print $NF}‘);do newfile=$(echo $file | sed ‘s/\.1//g‘); mv $file $newfile; done
# 美化一下
for file in $(ls -lh | awk ‘$NF~/log/{print $NF}‘); do
    newfile=$(echo $file | sed ‘s/\.1//g‘)
    mv $file $newfile
done

法二:

#  ls *.1 | sed -r "s#(.*).1#mv & \1#" | bash 

注:
sed替换标记:
\1表示前面第一个左括号所表示的内容,\2表示前面第二个左括号中表示的内容,以此类推
&表示前面匹配到的内容

原文地址:https://blog.51cto.com/hld1992/2362548

时间: 2024-11-09 13:59:26

Linux利用sed批量修改文件名的相关文章

关于linux系统下批量修改文件名和后缀

总会遇到遇到处理文件的问题,比如文件后缀修改,以前都是写shell,后来发现有个更简单的方法 rename 1,在centos 下是用c 写的 rename 用法: a.txt  修改为 a.cc rename txt  cc *.txt                  renme  [原字符串]  [要修改成的字符串]   [匹配文件] 有时候会遇到按序号段来修改的 a001.txt  修改为a0099.txt rename a00 a000 a00??        rename  [原字

Linux中批量修改文件名

有时候我们有一个目录下面的文件名都需要重新命令 如: 以下有十个学生完成的脚本,现在需要将finish改为ing [[email protected] test]# touch student_{01..10}_finish.sh [[email protected] test]# ls student_* student_01_finish.sh  student_03_finish.sh  student_05_f student_02_finish.sh  student_04_finis

Linux下批量修改文件名(rename)

原文地址: http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的在本目录下只需要# rename 'cdb1' 'cdb' * 以前都是写个for循环来做...想想多傻啊, 呵呵 rename还有更多的功能, 建议man rename下 From:http://www.ha

Linux下批量修改文件名(rename)

1.rename命令批量修改文件名, 其实Linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的在本目录下只需要# rename 'cdb1'  'cdb'  * 以前都是写个for循环来做...想想多傻啊, 呵呵 rename还有更多的功能, 建议man rename下 From:http://www.hao32.com/unix-linux/42.html 2.批量更改文件名 rename 通过 man rename 命

linux(uinx)批量修改文件名的命令行

ming内容前要:同事有一个批量改服务器上文件名字的需求.我把在ubuntu上批量修改文件名字的命令给他,但是不能用.因为服务器是unix.所以下面整理一下批量修改文件名的命令. ===================================================我是分隔符================================================ 首先 你要先知道 自己所处的服务器环境. 命令:cat /proc/version 接下来介绍 一下ubunt

如何用python从文中获取文件名再用正则表达式批量修改文件名

第零步:问题的提出 我在网上购买了星火英语的六级晨读美文100篇(六级早已高分飘过,不过很喜欢这些文章,买来重新品味),但是发现其文章的命名都为01.txt或10.txt等.为了便于检索需要修改文件名称. 第一步:从文件中取出文件名. 我发现txt文件的第一行为文件名,格式为如:Passage 3. Three Passions I Have Lived for, 后面还有几个换行符.写下如下代码进行第一步修改: import os x = 1 while x < 101: if x < 10

shell脚本:批量修改文件名(删除文件名中字符)

shell脚本:批量修改文件名(文件名中添加字符) 上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符: 举例如下:批量改名,删除文件名中多余字符 目录下文件名为如下,要求去掉_finished. stu_102999_1_finished.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finis

批量修改文件名后缀

find . -name "*.cpp"|sed -e 's/\(.*\).cpp$/mv & \1.mm/e' 批量修改文件名后缀

CMD命令实现批量修改文件名

cmd命令批量修改文件名:  (批量去掉下载电影后的前缀) @echo off for /f "delims=" %%a in ('dir /b/s/a-d [阳光电影www.ygdy8.com].*') do (     set "str=%%~nxa"     setlocal enabledelayedexpansion     ren "%%a" "!str:~20!"     endlocal ) 批量删除文件名特定