find
译者:飞龙
自豪地采用谷歌翻译
希望你正在发现阻碍自己的各种方式,甚至在你开始工作之前。也许这不是戏剧性的,但你至少应该确定你在环境中可以改善的东西,它们使你难以开始工作。这些小练习是你专注于开始的一个好方法,因为它们不是那么重要,并且能够放进一个适合你分析的时间尺度。如果这些项目有几个小时那么长,当你复查你做了什么,并做出改进的时候,你会觉得无聊,短暂的45分钟的项目,是你可以记录和非常快速审查的东西。
这是我在学习中使用的一种模式。我会识别我需要改进的东西,例如我如何开始,或者我如何使用一个工具。然后我会设计一个练习来关注它。当我正在学习画画时,我外出并努力画树。我坐下来看着问题,我发现的第一件事就是我拖住了太多的东西。我也把我所有的东西都放在我公寓附近的随机的地方。我为我的绘画用品购买了一个特定的包,并保持这个包是准备好的。当我想在外面画画时,我拿起这个包,走到几个地方之一,而不是精心规划到哪里绘画。我练习拿起我的包,走到两个地方之一,准备好,画一幅画,然后回家,直到我像丝绸一样平滑。之后我看了 Bob Ross 的作品,弄清如何画树,因为这个家伙可以很快画出来很多树。
这是你应该做的。很多人在他们的工作领域浪费时间和精力。你是否有一个专门的工作场所,永远不会改变吗?我放弃了我的笔记本电脑,现在只需要使用台式机,这样我就可以在一致的地方做我的工作。这也让我的背部和颈部不用拖着这块金属,给了我更大的工作屏幕,都提高了我的工作能力。在这个练习中,我希望你专注于你的工作领域,并确保在开始之前准备好:
用这个练习来思考这样的主题,并试图简化和改善你的环境。有一件事 - 不要花很多钱买奇奇怪怪的工具。只需确定问题,然后尝试找到解决方法。
在这个挑战中,你要实现用于查找文件的find
工具的基本版本。像这样运行find
:
find . -name "*.txt" -print
这将搜索当前目录中以.txt
结尾的每个文件,并将其打印出来。 find
的命令行参数数量很多,所以你不应该在45分钟内实现它们。find
的一般格式是:
.
或/usr/local/
。-name
或-type d
(目录类型的文件)。-print
。你可以执行有用的操作,例如在每个找到的文件上执行命令。如果要删除主目录中的每个Ruby文件,可以执行以下操作:
find . -name "*.rb" -exec rm {} \;
请不要运行它,除非意识到它会删除所有以.rb
结尾的文件。-exec
参数需要一个命令,将{}
的任何实例替换为文件的名称,然后碰到;
(分号)时停止读取命令。在前面的命令中我们使用\;
,因为 bash 和许多其他 shell 使用;
(分号)作为他们的语言的一部分,所以我们必须转义它。
这个练习将真正测试你使用argparse
或sys.argv
的能力。我建议你运行man
找到参数列表,然后尝试使用find
来确定你将要实现什么参数。你只有45分钟,所以你可能不会实现太多,但是-name
和-type
,以及-print
和-exec
是必不可少的。-exec
参数将是一个挑战,所以将它保存到最后。
当你实现它的时候,尝试找到可以为你做的工作的库。你一定要查看subprocess
模块和glob
模块。同时要更仔细地查看os
模块。
find
的功能?你可以在 45 分钟的 Hack 内实现多少find
的功能?也许把它作为下一个星期的黑客热身挑战,来看看你能做些什么。记住,你应该试图拼凑出最好的、最丑陋的黑魔法。别担心,我不会告诉那些敏捷的人,你只是玩玩而已。