请帮我编写shell脚本来列出文件夹中的所有文件,然后如果文件名以“C”开头,则将其权限更改为777,并删除以“F”开头的文件
我的上述问题的代码是
for item in *
do
if [ -f $item ]
then
echo $item
fi
if [ $item c* ]
then
chmod 777 -f c*
echo $item
fi
if [ $item f* ]
then
rm -v f*
echo $item
fi
done
请指正
答案1
这不是解决您问题的答案。这是关于您的问题的答案(需要一些格式和比评论中允许的更多的空间)。
如果这是一项家庭作业,你应该说明这一点,并且你不应该要求有人为你解决这个问题,但你可以提出具体问题,以便更多地了解 Unix。
由于它似乎是家庭作业,该任务的想法可能不是“完成事情”,而是教你编程和思考,所以这不是回答这些问题的正确渠道。
3- 您可以在这里做的是,在将问题分解为多个部分后,询问:
- 我如何列出所有文件?,
- 如何使用模式进行搜索?
- 如何在过滤其中一些文件后对文件应用命令?
- 我想使用 shell 命令来执行此操作吗?或者
- 我会使用 bash 作为编程语言吗?
如果您的作业是关于循环、case 语句和 if 工作流程的编程,并且您对此有具体问题,那么 Stack Overflow 可能是一个更好的地方。
如果您是 Linux 新手,并且还不知道命令或管道的魔力或如何使用 shell 脚本来自动执行这些命令(这是管道而不是编程),可以询问它,这样您就可以学习关于过滤grep
并使用 执行xargs
,或过滤并使用 执行find … -exec
。
例如,在 Linux 中,您可以列出文件ls
并进行过滤grep
(这里您需要查找“开头为”的正则表达式)。
一旦你知道了这一点,你需要决定是否要将它放入循环或管道中xargs
(我建议你学习 的力量xargs
)。
这是一句经典的俏皮话,可以让你走上正轨:
ls | grep "^c" | xargs -I{} echo "wanted_command -options command {}"
所以你可以编写一个脚本来自动化它。
如果这是一个作业,我建议您为每个操作创建一个函数(您需要阅读有关在 shell 中创建函数的内容),以便在每个if
/case
语句中调用适当的函数。