当前位置:首页 » 操作系统 » linux批量文件名

linux批量文件名

发布时间: 2022-10-25 04:50:05

‘壹’ linux怎么批量修改文件名称

可以用脚本实现批量文件名称修改,以perl脚本为例:

注释:

1. # touch rename.perl //创建一个文件:rename.perl , 内容如下。

2. # chmod +x rename.perl

3. # cp rename.perl /bin/

4. # rename.perl 's/gongxu/leibie/g' * //将目录中所有文件名中的 gongxu 替换为 leibie。

#!/usr/bin/perl -w
# rename - Larry's filename fixer
#用法: Perl表达式 [要处理的文件名]
$op = shift or die "Usage: rename expr [files]\n";

#如果没有给出要处理的文件名则从标准输入读入
chomp(@ARGV = <STDIN>) unless @ARGV;

for (@ARGV) {
$was = $_;
eval $op; #对待处理的文件名($_)执行用户输入的Perl表达式$op
die $@ if $@; #退出 , 如果eval出错
rename($was,$_) unless $was eq $_;
}

rename脚本的经典实例示范:

% rename.perl 's/\.orig$//' *.orig #移除文件末尾的.orig

% rename.perl "tr/A-Z/a-z/ unless /^Make/" * #所有非Make打头的文件名大写转为小写

% rename.perl '$_ .= ".bad"' *.f #每个*.f文件后面追加一个.bad

% rename.perl 'print "$_: "; s/foo/bar/ if =~ /^y/i' * #回显每个待处理的文件名, 等待输入, 如果用户输入以y或Y打头, 把文件名中的foo替换成bar

% find /tmp -name "*~" -print | rename.perl 's/^(.+)~$/.#$1/' #把 /tmp目录里面每个文件名末尾有~的文件名改成以.#开头

‘贰’ Linux 下使用 shell 批量修改文件名的三种方法

1、通过sed替换

[root@node01 wolf]# find / -type f -name wolf.log

/wolf.log

/tmp/wolf.log

/root/wolf/wolf.log

[root@node01 wolf]# sed -i 's#wolf#yujing#g' find / -type f -name wolf.log

[root@node01 wolf]# find / -type f -name "wolf.log" | xargs cat

yujing

yujing

yujing

[root@node01 wolf]#

2、通过变量子串替换

vi laolang.log

wolf_20170806_1_wolf.jpg

wolf_20170806_2_wolf.jpg

wolf_20170806_3_wolf.jpg

wolf_20170806_4_wolf.jpg

wolf_20170806_5_wolf.jpg

wolf_20170806_6_wolf.jpg

wolf_20170806_7_wolf.jpg

wolf_20170806_8_wolf.jpg

wolf_20170806_9_wolf.jpg

wolf_20170806_10_wolf.jpg

[root@node01 data]# touch cat laolang.log |tr "\n" " "

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_wolf.jpg

[root@node01 data]# f=wolf_20170806_10_wolf.jpg

[root@node01 data]# echo $f

wolf_20170806_10_wolf.jpg

[root@node01 data]# echo ${f%wolf*.jpg}

wolf_20170806_10_

[root@node01 data]# mv $f echo ${f%wolf*.jpg}.jpg

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_wolf.jpg

[root@node01 data]# for f in ls *wolf.jpg ;do mv $f echo ${f%wolf*.jpg}.jpg;done

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_.jpg

3、修改扩展名

把上面的jpg更换为log

[root@node01 data]# f=wolf_20170806_10_.jpg

[root@node01 data]# echo ${f/%jpg/log} 

wolf_20170806_10_.log

[root@node01 data]# mv $f ${f/%jpg/log}

[root@node01 data]# ls

apache-maven-3.3.9 day1 laolang.log wolf_20170806_2_.jpg wolf_20170806_5_.jpg wolf_20170806_8_.jpg

apache-maven-3.3.9-bin.tar.gz day2 wolf_20170806_10_.log wolf_20170806_3_.jpg wolf_20170806_6_.jpg wolf_20170806_9_.jpg

cat day3 wolf_20170806_1_.jpg wolf_20170806_4_.jpg wolf_20170806_7_.jpg

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_.jpg

[root@node01 data]# for f in ls *.jpg ;do mv $f ${f/%jpg/log} ;done

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_.log

以上就是本次分享的全部内容,现在想要学习的程序员欢迎关注六星社区,获取更多技能与教程。

‘叁’ linux下如何批量删除文件名的某个字符串

win系统下批量删去文件名中某些字符的方法:

第一步,安装工具软件后打开使用,通过点击【添加文件】按钮或者拖动的方式将文件添加到软件中,可以同时添加几百个文件到软件中,添加成功后会显示在软件中。

‘肆’ linux下批量修改文件名

例如你要删的文件或目录的总目录为“/home/ttt”,那么执行这条命令就能全删除:
grep
-r
[email protected]
/home/ttt
|
awk
-f
':'
'{print
$1}'
|
xargs
rm
-rf

‘伍’ 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_NAME in `find $file_path/*.$EXT \
-newer /tmp/FROM.TAG -and ! -newer /tmp/TO.TAG`
do
OLD_NAME=${FULL_NAME%.$EXT}
NEW_NAME="${OLD_NAME}0000" #这是你要加的四个零
#NEW_NAME=`echo $FULL_NAME |sed 's#\(^[^.]*\)\..*$#\10000#'` # 另种方法,仅作参考
echo rename "$OLD_NAME.$EXT" to "$NEW_NAME.$EXT"
mv "$OLD_NAME.$EXT" "$NEW_NAME.$EXT"
done
#
/bin/rm /tmp/FROM.TAG
/bin/rm /tmp/TO.TAG
#--------------------------------
RHEL5已经测试过了,怎么执行脚本相信你一定了解,呵呵,我不多说了

‘陆’ windows与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/bash

catsource_name.txt|whilereadLINE
do
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权限:

sudochmod777rename_by_source.sh

“6”在终端中,在当前文件夹下运行上述shell脚本文件:

./rename_by_source.sh

完成。

下面是我这里的测试截图,

如有帮助,烦请采纳,谢谢!

‘柒’ 关于在Linux中如何批量修改文件名

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

‘捌’ linux下如何批量修改文件名

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
请采纳。

‘玖’ Linux批量提取文件名

简单的获取文件名的话,可以输入命令:ls,如果需要把整个磁盘所有文件名字打出的话,需要写个脚本,循环递归下。

‘拾’ Linux 批量修改文件名 rename

安装
Ubuntu: sudo apt-get install rename

[options] 部分先不看,其实就是:

其中:

以上每个部分都可以使用正则表达式,执行命令之后,就把原来的 oldname 换成了 newname,非常方便。

此外也可以使用通配符:

当命令中最后 file 为 * 时表示,匹配当前文件夹下所有文件,如果为 ? 时则匹配只有一个字符的文件名。

这一行命令的解释就是,对当前文件夹下满足 * 的所有文件,文件名中包含 aaaa 字符的替换为 bbbb 其中 "s/pattern/new/" 中的 / 一个都不能少。

因为支持正则表达式,那么 $ 表示的就是结尾,将结尾替换为 .txt 也就意味着给所有文件添加 .txt 的后缀

结尾有 .txt 的内容替换为空,也就是删掉后缀了。

注意,这里只是删除了文件名中的字段,并不是把文件给删掉。

参考文献: http://einverne.github.io/post/2018/01/rename-files-batch.html

热点内容
qqandroid版 发布:2025-07-07 22:29:59 浏览:40
python解压gz 发布:2025-07-07 22:03:19 浏览:620
安卓俄罗斯方块源码 发布:2025-07-07 21:56:11 浏览:474
安卓手机之王是哪个手机 发布:2025-07-07 21:44:30 浏览:613
安卓照片存储位置 发布:2025-07-07 21:31:58 浏览:964
kingcmsphp 发布:2025-07-07 21:31:49 浏览:393
微信的锁屏密码是什么 发布:2025-07-07 21:28:52 浏览:758
树莓派自带ftp开启 发布:2025-07-07 21:11:41 浏览:51
智慧树用脚本会怎么样 发布:2025-07-07 21:05:48 浏览:517
随机启动脚本 发布:2025-07-05 16:10:30 浏览:536