现在想写一个脚本,把当前目录下所有txt文件的分隔符|替换为|+|,现在我可以把只定文件的字符正确替换了,但是不知道怎么获取文件名称。刚开始学习,还不太明白,还请大家指教。急求急求,谢谢
下面是我写的shell内容:
sed 's/|/|+|/g' $*.txt > 2.txt
mv 2.txt $*.txt
|
可以在当前目录下,创建一个临时目录, 例如:
mkdir td
然后,执行下面的命令:
find . -name "*.txt" -exec sh -c "sed 's/|/|+|/g' {} >./td/{}" ;
这个时候,所有的输出文件都存放到 ./td目录下了.
你可以使用下面的命令:
mv ./td/* .
将输出文件更换为原来的目录下.
|
回复楼主:
可以写个脚本实现,稍描当前路径下所有的.txt 文件,并替换分隔符|替换为|+| 。 假设脚本名为 :sedtxt.sh 内容如下
#!/user/bin/ksh
##########################################
#XXXXX LD.CO
#FUNCTION: 替换文件分隔符
#AUTH: WUCG
#DATE: 2009-07-09
#######################################
#进入指定的目录
PATH="CURR_DIR" #这个路径需要根据需要修改
cd $PATH
for filename in `ls *.txt`
do
sed 's/|/|+|/g' $filename > ${filename}.tmp
mv ${filename}.tmp $filename
done
exit
########### 脚本结束 ############################
脚本结束后,给脚本赋予可执行权限, chmod u+x sedtxt.sh , 然后执行该脚本,就可以了 sh ./sedtxt.sh
祝你好运!!!!
|
sed -i 's/|/|+|/g' $*.txt
试试这个-i参数
|
sed -i "s/|/|+|/g" `find . -name *.txt`