如何用shell脚本实现根据当前文件名生成新文件

hpy121 2009-09-07 10:01:35
编写一个shell脚本,实现如下功能:查找当前目录下文件名格式为‘??_Probe*Table?_?.dat’的文件,如果这个文件大小大于0,则在当前目录下生成一个新的文件名格式为'??_Table?_?.dat'的文件。
...全文
407 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bourbaki 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hpy121 的回复:]
晕,本来是要给xiaocai0001 50,bourbaki 30,hairetz 20 的,咋个变成bourbaki 70,hairetz 20?
[/Quote]
呵呵,不好意思
xiaocai0001 2009-09-10
  • 打赏
  • 举报
回复
嗯, 看花眼了 :)
hpy121 2009-09-10
  • 打赏
  • 举报
回复
晕,本来是要给xiaocai0001 50,bourbaki 30,hairetz 20 的,咋个变成bourbaki 70,hairetz 20?
bourbaki 2009-09-07
  • 打赏
  • 举报
回复
恩,错了,没考虑到sed不支持非贪婪匹配

files=$(ls -l | awk ' /.?.?_Probe.*Table.?_.?.dat/ { if ($5 == 0) print $8} ')
for i in $files
do
touch $(echo ${i} | sed -e "s/Probe.*Table/Table/g")
done
bourbaki 2009-09-07
  • 打赏
  • 举报
回复
files=$(ls -l | awk ' /.?.?_Probe.*Table.?_.?.dat/ { if ($5 == 0) print $8} ')
newfiles=$(echo ${files} | sed -e "s/Probe.*Table/Table/g")
touch $newfiles
xiaocai0001 2009-09-07
  • 打赏
  • 举报
回复

for f in ./??_Probe*Table?_?.dat
do
if [ -f "$f" && -s "$f" ] ; then
newname=`echo $f | sed 's/\(.._\)Probe.*\(Table._.\.dat\)/\1\2/'`
touch $newname
fi
done

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧