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

linux批量修改文件

发布时间: 2022-05-15 14:12:23

① 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快速修改文件夹及文件下所有文件与文件夹权限

Linux 权限继承 ,使用setfacl划分权限
Linux 文件权限分为 owner group other
如:
drwxrwx--- 5 wdj wdj 4096 09-26 11:51 test
如果用户soft 想对test目录有读写权限,一种是将soft用户加入wdj组中。另一种是将other权限改为rw
如果想让此目录下的文件或目录继承父目录权限,则每次要chmod -R ....一下
现在可以使用setfacl解决以上问题
setfacl -R -m u:soft:rwx test
[soft@node2 data]#ll
drwxrwx---+ 5 wdj wdj 4096 08-20 14:51 test
这样soft用户就可以操作test目录
setfacl -d --set u:soft:rwx test
-d是让子目录继承父目录权限
使用getfacl命令查看acl权限
[soft@node2 data]# getfacl test
# file: test
# owner: wdj
# group: wdj
user::rwx
user:soft:rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:soft:rwx
default:group::rwx
default:mask::rwx
default:other::---
setfacl -x u:soft test
去掉单个用户的权限
setfacl -b test
删除test目录的所以acl权限

③ 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已经测试过了,怎么执行脚本相信你一定了解,呵呵,我不多说了

④ 如何在linux下快速批量修改文件夹和文件权限

方法/步骤
Linux系统中,每个文件的权限默认是由创建它的使用者所指定的。而且权限不随文件环境的改变而变化。换言之,你从别的地方复制、下载、接受过来的文件权限与它原始的权限保持一致。例如图1中的文件是通过蓝牙装置接收的。

当新的操作者的权限低于文件默认的权限时,文件是没有办法运行的。例如图2,当试图运行文件夹中的某个文件时,由于权限原因,文件被拒绝执行。系统提示:Permission denied.

如果你对要操作的文件权限没有特殊要求的话,并确定文件安全可靠,你可以使用chmod 777 [Filename] (中括号里是你要改的文件名,实际输入不包括中括号)命令来快速修改文件权限为最高(即文件可被读/写/运行)。注意:修改成功后,是没有提示的;修改不成功才有提示。

⑤ 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如何批量修改文件里内容啊。

1.先将你上面的文本保存为文件 ts.txt
2.保存如下脚本为ts.sh并修改可执行权限。
#!/bin/bash
cat ts.txt |gawk '/IOPATH/ {if (gsub(/\(|\)/,"")) {
t1=$1;t2=$2;t3=$3;
split($4,value1,":");v1=value1[1];v2=value1[2];v3=value1[3];
split($5,value2,":");v11=value2[1];v22=value2[2];v33=value2[3];
print "\t("t1" " t2" " t3 " ("v1*10":"v2*10":"v3*10") ("v11*10":"v22*10":"v33*10"))"};
next} {print}'
3. # ./ts.sh >ts1.txt
4. # more ts1.txt 输出如下,按照你的要求每个数*10
(CELL
(CELLTYPE "OR2X1")
(INSTANCE U2604)
(DELAY
(ABSOLUTE
(IOPATH A Y (6.5:6.5:6.5) (4.57:4.57:4.57))
(IOPATH B Y (6.08:6.08:6.08) (6.82:6.82:6.82))
)
)
)
(CELL
(CELLTYPE "OAI21XL")
(INSTANCE U2603)
(DELAY
(ABSOLUTE
(IOPATH A0 Y (1.11:1.11:1.11) (0.49:0.49:0.49))
(IOPATH A1 Y (3.11:3.11:3.11) (-0.37:-0.37:-0.37))
(IOPATH B0 Y (1.86:1.88:1.88) (0.62:0.62:0.62))
)
)
)
5. # diff ts.txt ts1.txt 比较结果输出如下
6,7c6,7
< (IOPATH A Y (0.650:0.650:0.650) (0.457:0.457:0.457))
< (IOPATH B Y (0.608:0.608:0.608) (0.682:0.682:0.682))
---
> (IOPATH A Y (6.5:6.5:6.5) (4.57:4.57:4.57))
> (IOPATH B Y (6.08:6.08:6.08) (6.82:6.82:6.82))
16,18c16,18
< (IOPATH A0 Y (0.111:0.111:0.111) (0.049:0.049:0.049))
< (IOPATH A1 Y (0.311:0.311:0.311) (-0.037:-0.037:-0.037))
< (IOPATH B0 Y (0.186:0.188:0.188) (0.062:0.062:0.062))
---
> (IOPATH A0 Y (1.11:1.11:1.11) (0.49:0.49:0.49))
> (IOPATH A1 Y (3.11:3.11:3.11) (-0.37:-0.37:-0.37))
> (IOPATH B0 Y (1.86:1.88:1.88) (0.62:0.62:0.62))
从以上比较的结果可以看出每个符合要求的值都乘以了10.
希望能帮你解决

⑦ linux怎样批量修改文件内容

2.1 将文件1.txt内的文字“garden”替换成“mirGarden”
# sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很简单
2.2 将当前目录下的所有文件内的“garden”替换成“mirGarden”
## sed -i "s/garden/mirGarden/g" `ls` //其实也就是ls出多个文件名而已

⑧ 如何批量修改linux 文件编码格式

批量转换文件的编码当然是使用命令来转换咯,如果文件太多还可以写一个shell脚本进行批量转换,Linux系统中转换文件编码格式的命令是iconv。iconv命令的使用介绍一下,iconv命令很简单,记住它的三个参数就可以了,下面是它的三个参数:
-f参数:表示from,就是原本的编码格式
-t参数:表示to,就是后来的新编码
-o参数:表示输出文件,就是转换编码后的新文件的文件名,如果没有这个参数新文件会将原来的文件覆盖掉。
下面是将GB2312编码的文件转换成UTF-8编码的例子:
iconv -f gb2312 -t utf8 mygb2312.txt -o myutf8.txt
这个例子中mygb2412.txt就是要转换的文件,myutf8.txt就是转换后的新文件。

⑨ 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目录里面每个文件名末尾有~的文件名改成以.#开头

热点内容
油泵房配置哪些消防系统 发布:2024-10-10 23:23:59 浏览:949
pcl如何创造有mods服务器 发布:2024-10-10 23:16:18 浏览:851
证券中的ftp 发布:2024-10-10 23:16:14 浏览:483
风行视频缓存 发布:2024-10-10 23:02:55 浏览:602
武汉学java 发布:2024-10-10 23:00:52 浏览:359
php入门到精通 发布:2024-10-10 22:51:27 浏览:526
我的世界基岩版的服务器怎么进入 发布:2024-10-10 22:45:32 浏览:360
什么是保险柜主密码 发布:2024-10-10 22:39:54 浏览:660
sql临时表效率 发布:2024-10-10 22:24:37 浏览:503
linux搭建mc服务器搭建 发布:2024-10-10 21:58:38 浏览:984