【发布时间】:2011-09-21 17:34:02
【问题描述】:
我正在编写一个 bash 脚本。
grep -R -l "image17" *
当我通过我的循环时,image17 将更改为其他数字。当我执行上面的grep 时,我得到以下信息:
slides/_rels/slide33.xml.rels
我需要将slide33 放入一个变量中,因为我想用它来将名为image17.jpeg 的文件重命名为slide33.jpeg。我需要一些东西来检查上述格式并从幻灯片开始解析并以数字结尾。
另一个问题是 grep 语句可能会产生多个结果而不是一个。我需要一种方法来检查有多少结果,以及是否一个人做一件事,如果不止一个人做另一件事。
这是我目前所拥有的。现在我只需要将 grep 作为变量并检查它发生了多少次,如果是一次,然后执行正则表达式来获取文件名。
#!/bin/sh IFS=$'\n'
where="/Users/mike/Desktop/test"
cd "${where}"
for file in $(find * -maxdepth 0 -type d)
do
cd "${where}/${file}/images"
ls -1 | grep -v ".png" | xargs -I {} rm -r "{}"
cd "${where}/${file}/ppt"
for images in $(find * -maxdepth 0 -type f)
do
if [ (grep -R -l "${images}" * | wc -l) == 1 ]
then
new_name=grep -R -l "slide[0-9]"
fi
done
done
【问题讨论】:
-
请发布您已经写的内容,以便我们帮助修改
-
Mike,请点击edit 并使用正确的代码格式重新发布您的代码。然后删除您的评论...没有人会解析您发布的内容。
-
@MikePennington - 我更新了帖子。我在那里的 If 语句和 new_name 变量不起作用,但这就是我想要做的。
标签: regex linux bash terminal grep