Linux下批量修改文件名
提供一个在Linux下使用Shell脚本来批量改名的方法,我很久不用Windows系统了,所以只有Linux下的方法。
我这边在Linux下的测试过程是下面这样的:
「0」提醒:在终端terminal中,第一步就是把当前目录切换到文件所在目录,用cd命令。
「1」新建文件夹,起名为「rename_by_source」,用来放置「改名前的文件」、「shell脚本文件」、「文件名对应文件」,以及保存「改名后的文件」。你在自己电脑上操作时,也建议你把下载下来的需要改名的文件放到一个单独的文件夹里,这样容易查看一些。
「2」我新建的「rename_by_source」文件夹中,根据你给的文件名对应表,新建了4个「改名前的文件」,它们是空白文件,只是有个文件名而已,另外,估计文件类型是mp3文件,所以后缀名是.mp3,如果你的文件不是mp3类型的话,请届时自行在shell脚本文件里更改相关的代码行。
「3」在文件夹中,新建了「source_name.txt」文件,用来放置(改名前)与(改名后)的对应文件名,跟你给的图片一样,也是一行对应一个文件的,只不过,把ren那一列删除了。如果你要直接使用下面提供的shell脚本的话,也请把你的文件名对应文件中的ren那一列删除,并且「数字」名的前面不要有空格或其它字符。同时,你的文件名对应文件也请保存为「source_name.txt」这个名称和格式的文件。
「4」shell脚本文件「rename_by_source.sh」,内容如下:
#!/bin/bashcat source_name.txt | while read LINEdo ori_name=${LINE:0:7}; des_name=${LINE:8}; cp "${ori_name}.mp3" "${des_name}.mp3";done解释一下,第3句是逐行读取source_name.txt的内容,并赋值给变量LINE,第5句是把该行的第1至第8个字符作为原始文件名,第6句是把该行的第9至末尾的字符串作为新文件名,第7句是在当前文件夹下「复制」(原始文件名.mp3)文件并重命名为(新文件名.mp3)文件。
之所以采用「复制」而不是「移动」命令,主要还是希望避免误操作。
「5」在前面的文件夹中,新建并保存上述shell脚本文件,然后在终端terminal里赋予此shell脚本文件的可执行权限,反正也没有什么关系,我是直接改为了777权限:
sudo chmod 777 rename_by_source.sh「6」在终端中,在当前文件夹下运行上述shell脚本文件:
./rename_by_source.sh完成。
下面是我这里的测试截图,
搞定。
上述shell脚本及演示文件等,已放入百度网盘,链接: 「1F-3Mc2n5-8a4QSCNAVpDfg」, 提取码: 「82jd」,请自取,有效期7天!(链接的前面部分,请自行补充。)
如有帮助,烦请采纳,谢谢!
写个脚本 逐个修改即可
#!/bin/bashfor file in $(ls *.jpg)do filename=${file%.jpg} count=$(echo $filename | wc -c ) if [ $count -gt 2 ]; then mv $file "2${filename}.jpg" else mv $file "20${filename}.jpg" fidone
然后查找%%
for i in *; do echo mv $i ${i##_*}.tar;done
如果看着显示没问题 就把中间的 echo 去掉 在运行一次
LINUX环境下如何批量修改软件内的其中一个内容。
:1,$s\/a\/b\/g 多个文件的话 file="a b c ..."for i in $file do sed 's\/before\/after\/g'` $i done 注意下相对路径就好
linux一个文件下有很多只读文件,怎么批量修改为可写?
chmod 766 \/目标文件夹,这样属组和其他用户都具有写入权限
linux修改文件名命令
0 1、打开xshell软件连接上linux服务器。2、使用指令【touch文件名】创建一个空文件。3、指令【ls -l】查看新创建的文件。4、接着使用指令【mv旧文件名新文件名】修改文件名。5、再次使用【ls -l】可以看到文件名已经被修改成功了。mv修改文件名的时候,新文件名要跟旧文件名在同一个目录下。
Linux下批量修改文件名
man bash 然后查找 for i in *; do echo mv $i ${i##_*}.tar;done 如果看着显示没问题 就把中间的 echo 去掉 在运行一次
linux 批量修改主机名脚本
这个要涉及到几个实现点:1、批量登陆到不同主机:expect实现就可以 2、看需要修改的主机机器是什么发行版,Suse的一般修改HOSTNAME就可以,RedHat修改、\/etc\/sysconfig\/里面的某个文件 。如果只是单纯数字很很简单给个例子:!\/usr\/bin\/perl foreach (1..254) { print ("wb_3rdapi_cgi_$_"."\\n...
linux批量修改文件名
!\/bin\/bash wrote by dywer, Beijing 01\/21\/2010 file_path='\/var\/down' #文件路径,结尾无杠 EXT='RPT' #欲改名的文件的扩展名 时间格式 [[CC]YY]MMDDhhmm[.ss]touch -t 201001010000 \/tmp\/FROM.TAG # 开始时间 touch -t 201001021632 \/tmp\/TO.TAG # 结束时间 for FULL_N...
linux批量修改文件名脚本(去掉开头的“.”)
for file in .[^.]*;do mv $file ${file:1}; done
linux 批量修改主机名脚本
5 spawn ssh root@${Ipaddr} spawn ssh ${Uname}@${Ipaddr} expect { "*yes\/no" { send "yes\\r"; exp_continue} "*assword:" { send "root\\r" } "*assword:" { send "Upasswd\\r" } } expect "#*"send "修改主机名;\\r"send "重启服务;\\r"expect eof EOF1 done ...
如何批量修改linux 文件编码格式
批量转换文件的编码当然是使用命令来转换咯,如果文件太多还可以写一个shell脚本进行批量转换,Linux系统中转换文件编码格式的命令是iconv。iconv命令的使用介绍一下,iconv命令很简单,记住它的三个参数就可以了,下面是它的三个参数:-f参数:表示from,就是原本的编码格式 -t参数:表示to,就是后来的新...
关于Linux系统下,文件排列乱序的问题
批量修改文件可以用rename 命令实现。第一步把一位数字的文件名改成两位 rename biphenyl1-CHO- biphenyl1-CHO-0 biphenyl1-CHO-?.第二步把两位数字的文件名改成三位 rename biphenyl1-CHO- biphenyl1-CHO-0 biphenyl1-CHO-??.
纵叔枸橼: for file in "1.txt" "2.txt" "3.txt" do echo $file|rename "s/\.txt/\.doc/g" done如果当前目录下全部的txt都要改成doc,只要 rename 's/\.txt/.doc/' *.txt
九龙坡区18929727843: linux下如何给多个文件同时改名啊? - ?
纵叔枸橼: 1. 使用硬链接 先看概念:通过索引节点来进行的连接.在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex).在Linux中,多个文件名指向同一索引节点是存在的.一般这种连接就是硬连接. 由于指向同一个节点,所以改变一个,其他的也会随之改变. 不过你得先建立硬链接.如下是对文件 oldfile 创建硬链接: link oldfile newfileln oldfile newfile2. 使用脚本来进行批处理 在一个脚本里面添加多条 rm 或 remove 命令,然后运行这个脚本,以后就能一次性修改这些文件名.
九龙坡区18929727843: Linux批量重命名文件命令 - ?
纵叔枸橼: rename相关命令:mv rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式参数-n 操作预览,在不更改文件名...
九龙坡区18929727843: linux给文件批量改名字 - ?
纵叔枸橼: #!/bin/bashfor file in `ls |grep .*_mig` dotarget=$(echo $file|awk -F_mig '{print $1}')cp $file $target done执行上面这个脚本,可以把当前目录下以_mig结尾的文件复制一个(去掉_mig).如果你不要原来的文件,把cp改为mv. 这个脚本有个问题,就是说源文件名中只能有一个_mig,比如如果有134_mig_13_mig这样的文件,那么结果是被改为134.如果你的文件中不存在这种情况,就可以忽略.
九龙坡区18929727843: linux下如何批量修改文件名? - ?
纵叔枸橼: ls /data/music/*.mp3 | while read myfile do new=`echo "$myfile" | tr -d ' '` mv -f "$myfile" /data/music/$new done 用 tr -d ' ' 去除空格得到新文件名
九龙坡区18929727843: Linux怎么批量修改文件夹内文件的名称 注意:所有文件都没后缀名 - ?
纵叔枸橼: j=0 for i in `ls -1/dir` do j=$(expr $j + 1) mv $i $j.zip done
九龙坡区18929727843: linux 重命名大量文件 - ?
纵叔枸橼: linux下重命名文件或文件夹、批量实现重命名文件方法 一、 linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c其实在文本模式中...
九龙坡区18929727843: linux命令怎么把一个文档下的所有文件都改名? - ?
纵叔枸橼: 1.用for灵活,文件名中字符替换,加日期等都可 先用下面语句测试一下 for i in *aa* ;do NN=$(echo $i | sed 's/aa/bb/') ;echo "$NN";done 保险起见,只拷贝 for i in *aa* ;do NN=$(echo $i | sed 's/aa/bb/') ;cp "$i" "$NN";done 这是更名,慎用 ...
九龙坡区18929727843: linux批量替换指定文件夹下的所有文件名(包括子目录下的文件)中的字符串 - ?
纵叔枸橼: 思路:先找到文件,再替换 find /yourfolder/subdir -exec {sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`}\;
九龙坡区18929727843: linux下批量修改文件名 - ?
纵叔枸橼: 你先试一下,看行不行 保留文件名的前5位 rename 's/.{1,5}//' * 删除文件名中两个特定字符之间的全部字符 rename 's/_.*_//' *